خطاها در PHP

خرداد ۲۹, ۱۳۹۲ توسط : سعید

در هنگام کار با PHP ممکنه به چند نوع خطا برخورد کنید.این خطا ها براساس زمانی که اتفاق میافتن و اینکه آیا این خطاها درست شدنی هستن یا خیر دسته بندی میشن.این خطاها ممکنه به صورت خودکار توسط خود php اجرا بشن یا با استفاده از تابع trigger_error به وسیله کاربر اجرا بشن!!
خطاها زمانی رخ میدن که کار اشتباهی رو در کدهامون کرده باشیم.کارهایی مثل : اشتباه تایپی! ، حلقه های بی نهایت و …
اجازه بدید تا با دسته بندی خطاها در PHP آشنا بشیم :

  1. Fatal error
  2. Parse error
  3. Warning
  4. Notices

۱- Fatal Error

این نوع از خطاها که به خطاهای بحرانی هم معروفه باعث میشه که ادامه کار برنامه با مشکل مواجه شه یعنی نمیذاره بقیه برنامه اجرا بشه.بر اساس زمانی که این نوع خطا رخ میده به دسته های زیر تقسیم میشه :

Startup fatal error : این نوع خطا زمانی رخ میده که کدهای PHP نمیتونن اجرا بشن و مشکل از نصب یا تنظیمات PHP میتونه باشه.

Compile time fatal error : این خطا هنگامی رخ میده که از داده هایی استفاده کردید که وجود ندارن مثل فایلها ، توابع و کلاسها و … .

Run time fatal error : این خطا مثل خطای قبلی که هنگام کامپایل برنامه رخ میده.

نمونه ای از خطای Fatal Error

<?php
fnSwap();
echo "Swapped Successfully!"
?>

هنگام اجرای کد بالا به خطای زیر برمیخوریم که میگه

 Fatal error: Call to undefined function fnSwap() in ... on line 2

تابع fnSwap رو نتونسته پیدا کنه.

۲ – Parse Error

نوع دوم خطاها Parse Error ها هستند.این نوع خطاها فقط در زمان اجرای برنامه تولید میشن و اسم دیگه این نوع خطاها Syntax Error هستنش.یعنی توی کدهامون اشتباه تایپی داشتیم یا مثلا آخر خط سمی کالن نذاشتیم و …. این خطا هم از اجرای بقیه برنامه جلوگیری میکنه و باید درستش کنید.

<?php
echo "content to be displayed to the browser!"
echo "<br/>embedding line break";
?>

این کد به خاطر نذاشتن سمی کالن در انتهای خط اول خطا میده :

 Parse error: syntax error, unexpected 'echo' (T_ECHO), expecting ',' or ';' in ... on line 3

۳- Warning

این نوع از خطاها هم مثل Fatal Error در سه نوع دسته بندی زمانی قرار میگیره :

Start up warning

Compile time warning

Run time warning

این نوع خطاها توسط PHP به کاربر نمایش داده میشه اما مانع از اجرای بقیه برنامه نمیشه.مثلا کد زیر وقتی یک عدد رو بر صفر تقسیم میکنیم یک Warning دریافت میکنیم.

<?php
$count = 0;
$total = 200;
$result = $total/$count;
echo "RESULT: ". $result;
?>

اگر کد بالا رو اجرا کنید میبینید که یک Warning در صفحه مثل زیر نمایش داده میشه :

Warning: Division by zero in ... on line 4

اما همینطور که میبینید بقیه کدها اجرا شدن و مانع از اجرای برنامه نشده.

۴ – Notice

این نوع هم مثل انواع خطاهای قبلی میتونه خودکار توسط خود PHP درست بشه یا با استفاده از تابع trigger_error توسط کاربر ایجاد شه.به این نوع نیمشه گفت خطا و بیشتر اطلاعاتی رو به کاربر میدن که کاربر از وجود مشکلی باخبر کنن که این مشکل ممنکه به یک خطا ختم بشه!!!!!!!!!!!

به عنوان مثال کد زیر مقدار متغیری رو یکی اضافه میکنه که مقدار اولیه نداره.اما همینطور که میبینید برنامه به خوبی اجرا میشه و مقدار متغیر یکی اضافه میشه.

<?php
$result += 1;
echo "RESULT: ". $result;
?>

و خطای ایجاد شده  :

Notice: Undefined variable: result in ... on line 2
RESULT: 1

حرف آخر

با استفاده از تابع error_reporting  میتونیم مشخص کنیم که کدوم نوع از خطاها نمایش داده بشن.البته این کار رو از طریق php.ini هم میتونید انجام بدید. اما دقت کنید که دونستن نوع خطاها و اینکه این خطا چرا اتفاق افتاده یکی از مهمترین قسمتهای PHP است !!

بازدید : ۲۸۳۵

تیر ۱۱, ۱۳۹۲ @ ۲:۱۱ ب.ظ

ممنون. جالب بود.

پاسخ دادن

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


*