انجمن عمومی گسترش فناوری آگو
خطاها در PHP - نسخه‌ی قابل چاپ

+- انجمن عمومی گسترش فناوری آگو (http://forums.ago.ir)
+-- انجمن: انجمن های عمومی گسترش فناوری آگو (/forumdisplay.php?fid=1)
+--- انجمن: برنامه نویسی (/forumdisplay.php?fid=13)
+--- موضوع: خطاها در PHP (/showthread.php?tid=2221)



خطاها در PHP - agotd - 12-05-2013 04:40 PM

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

Fatal error
Parse error
Warning
Notices

1- Fatal Error

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

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

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

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

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

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

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

کد php:
Fatal errorCall to undefined function fnSwap() in ... on line 2 

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

۲ – Parse Error

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

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

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

کد php:
Parse errorsyntax errorunexpected 'echo' (T_ECHO), expecting ',' or ';' in ... on line 3 

3- Warning

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

Start up warning

Compile time warning

Run time warning

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

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

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

کد php:
WarningDivision by zero in ... on line 4 

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

۴ – Notice

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

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

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

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

کد php:
NoticeUndefined variableresult in ... on line 2
RESULT