ایجاد یک تابع رسیدگی کننده خطا در PHP

ایجاد این تابع کاملاً ساده است، و هرگاه که در کد PHP خطایی رخ داد این تابع فراخوانی می شود.

این تابع باید بتواند حداقل با دو پارامتر کار کند(سطح خطا و پیغام خطا) اما تا پنج پارامتر را بپذیرد(اختیاری: فایل، شماره خط و متن پیغام):

نحوه استفاده:

error_function(error_level,error_message,error_file,error_line,error_context)

پارامترتوضیحات
error_level

الزامی است، سطح گزارش خطا را مشخص می کند. جدول زیر را برای انواع سطوح گزارش خطا ببینید.

error_message

الزامی است، پیغام خطا را برای خطای تعریف شده توسط کاربر مشخص می کند.

error_file

اختیاری است. نام فایلی را که خطا در ان رخ داده است مشخص می کند.

error_line

اختیاری است. شماره خطی را که خطا در آن رخ داده است مشخص می کند.

error_context

اختیاری است. یک آرایه که شامل تمام متغییرهای در حال استفاده هنگام رخداد خطا با مقادیرشان است را مشخص می کند.

سطوح گزارش خطا:

مقدارنام ثابتتوضیحات
2 E_WARNING

خطاهای زمان اجرا غیر جدی. اجرای script متوقف نمی شود

8 E_NOTICE

اخطارهای زمان اجرا.script چیزی پیدا کرده که ممکن است خطا باشد? اما می تواند در اجرای معمولی script نیز رخ دهد

256 E_USER_ERROR

خطای جدی کاربرساز. مانند یک E-ERROR که توسط کابر با استفاده از تابع trigger_error( ) در php به وجود می آید.

512 E_USER_WARNING

هشدار غیرجدی کاربرساز. مانند یک E_WARNING است که توسط کابر با استفاده از تابع trigger_error( ) در php به وجود می آید.

1024 E_USER_NOTICE

اخطار کاربرساز. مانند یک E_NOTICE است که توسط کابر با استفاده از تابع trigger_error( ) در php به وجود می آید.

4096 E_RECOVERABLE_ERROR

خطای جدی گرفتنی. مانند یک E_ERROR است اما بوسیله ی رفع خطای تعریف شده توسط کاربر می توان ان را گرفت(set_error_handler( ) را نیز ببینید)

8191 E_ALL

همه ی خطاها و هشدارها?به جز سطح E_STRICT) E_STRICT در php 6.0 جزئی از E_ALL خواهد شد.)

حالا اجازه دهید تا یک تابع برای رسیدگی کردن به خطاها ایجاد کنیم، که شامل ورودی های زیر است:

  • errno$: سطح خطا
  • errstr$: متن خطا

function customError($errno, $errstr)
{
echo "<b>Error:</b> [$errno] $errstr<br />";
echo "Ending Script";
die();
}

کد بالا موقعی که راه اندازی شد، "سطح خطا" و "متن خطا" را می گیرد و سپس با چاپ کردن دو مورد ذکر شده به اجرای اسکریبت پایان می دهد.

در حال حاضر باید تصمیم بگیریم که چه موقع تابع بالا، راه اندازی شود.


آموزش های مرتبط

آموزش PHP-مدیریت خطا