PDA

View Full Version : آموزش: خطاها در PHP



H:Shojaei
یک شنبه 06 مرداد 1392, 15:43 عصر
سلام دوستان امروز يه مطلب درباره ي انواع خطاها در PHP پيدا كردم كه از نظر خودم احساس كردم خيلي جالب و مفيده (البته واسه مبتديها) واسه همين گفتم بذارم دوستان هم استفاده كنن.
همين الآن بگم كپي و پست كردم.
اگر دوستان ديگه هم در اين باره مطلبي چيزي دارن بزارن تا استفاده بشه ممنون. بالاخره اين كار يعني مدريت خطاها يكي از مهمترين كارهاست كه دقت و نظم برنامه نويس رو به رخ ميكشه.
خب شروع ميكنم:

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

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

1- 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



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 است.




*منبع* (http://phpro.ir/%D8%AE%D8%B7%D8%A7%D9%87%D8%A7-%D8%AF%D8%B1-php/#)