آموزش PHP   >   مرجع توابع مدیریت خطا در PHP >   تابع ( ) set_error_handler

تابع ( ) set_error_handler :

تابع ( ) set_error_handler ، برای تعیین یک تابع به عنوان تابع پیش فرض جهت مدیریت خطاهای رخ داده در صفحه استفاده می شود .
تابعی که در درون این تایع تعیین می شود ، هر گاه خطایی در صفحه رخ داده ، فعال شده و اسکریپت تعیین شده برای آن را اجرا می کند . به عبارت دیگر از این تابع می توانید برای مدیریت خطاهای صفحه به روش دلخواه خود استفاده نمایید .
تابع ( ) set_error_handler ، در صورت موفقیت در اجرا ، تابع تعیین شده برای آن را اجرا کرده و در غیر اینصورت مقدار Null را بر می گرداند .
شکل کلی استفاده از این تابع به صورت زیر است :

syntax set_error_handler( error_function , error_types ) ;

توضیح موارد syntax
توضیح نام پارامتر
این پارامتر نام تابع پیش فرض ، جهت مدیریت خطاهای رخ داده را تعیین می کند .
تعیین این پارامتر اجباری است .
error_function
این پارامتر تعیین می کند که پیام خطا برای error رخ داده در چه موارد و level ای ، نشان داده شود .
مقدار پیش فرض این پارامتر " E_ALL " بوده و پیام خطا برای تمامی error های رخ داده ، نشان داده می شود . اما شما می توانید حالت های دیگری که در جدول راهنمای شماره 1 آمده است را نیز انتخاب کنید .
تعیین این پارامتر اختیاری است .
error_types

ساختار تابع مدیریت کننده خطا چگونه است ؟

شکل کلی یک تابع طراحی شده برای مدیریت خطا در PHP می تواند به صورت زیر باشد :

syntax error_function ( error_level , error_message , error_file , error_line , error_context ) ;
در جدول زیر به تشریح پارامترهای کد فوق و استفاده آنها پرداخته شده است :
syntax توضیح هر یک از موارد
توضیح پارامتر
این پارامتر شدت اهمیت خطا را تعیین می کند . یک مقدار عددی است و شرح موارد آن در جدول راهنمای شماره 1 آمده است .
استفاده از این پارامتر اجباری است .
error_level
این پارامتر پیام خطا را که حاوی اطلاعاتی راجع به آن است را تعیین می کند .
استفاده از این پارامتر اجباری است .
error_message
این پارامتر نام فایلی که خطا در آن رخ داده است ، را مشخص می کند .
استفاده از این پارامتر اختیاری است .
error_file
این پارامتر شماره خطی که خطا در آن رخ داده است را مشخص می کند .
استفاده از این پارامتر اختیاری است .
error_line
این پارامتر نیز تمامی متغیرها و مقدارهایشان که در کد برنامه ای که خطا در آن رخ داده است را شامل می شود .
استفاده از این پارامتر اختیاری است .
error_context

جدول راهنمای شماره 1 : جدول زیر انواع مقادیر مختلف برای شدت اهمیت خطای رخ داده و توضیحات آنها را نشان می دهد :

جدول راهنمای شماره 1
پارامتر پارامتر توضیح
2 E_WARNING خطا با شدت اهمیت کم بوده و مانع اجرای اسکریپت نخواهد شد .
8 E_NOTICE پیام خطا یک اعلان مشکل . برنامه ممکن است ایرادی پیدا کرده باشد که از نظرش خطاست ، ولی مشکل خاصی ایجاد نمی کند .
256 E_USER_ERROR این خطا یک خطا مهم بوده و توسط کاربر پیش بینی شده است . به احتمال زیاد اجرای روند اسکریپت را متوقف می کند .
512 E_USER_WARNING یک پیام اخطار معمولی که معمولا باعث توقف اجرای اسکریپت نشده و توسط طراح پیش بینی شده است .
1024 E_USER_NOTICE یک اعلان بروز خطا یا مشکل معمولی که توسط طراح پیش بینی شده است .
4096 E_RECOVERABLE_ERROR یک خطای مهم و از کار اندازنده ، که قابل پیش بینی و مدیریت می باشد . معمولا این خطا توسط یک مدیریت کننده خطا طراحی شده توسط طراح برنامه ، شناسایی می شود .
8191 E_ALL همه نوع خطا و اخطار را شامل می شود .

نکات مهم درباره این تابع مدیریت کننده خطا :

  • نکته 1 : در صورت تعیین این تابع به صورت کامل ، دیگر تابع مدیریت کننده خطای استاندارد در PHP ، به هیچ وجه استفاده نخواهد شد .
    همچنین در صورت نیاز ، تابع مدیریت کننده خطا ، حتما بایستی با دستور ( ) die ، تمام شود .
  • نکته 2 : اگر error قبل از اینکه کد PHP به محل تعریف تابع پیش فرض تعیین شده برای مدیریت خطا برسد ، اتفاق بیفتد ، اسکرپیت نمی تواند از آن تابع استفاده کند . زیرا هنوز در کد برنامه ثبت و تعریف نشده است .

مثال عملی :

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

مثال <?php
    // تعریف تابع مدیریت کننده خطا
    function customError($errno, $errstr, $errfile, $errline)
     {
        echo "<b>Custom error:</b> [$errno] $errstr<br />";
        echo " Error on line $errline in $errfile<br />";
        echo "Ending Script";
        die();
      }


    // تعیین تابع مدیریت کننده خطا
    set_error_handler("customError");


    $test=2;

    // رخ دادن خطا
    if ($test>1)
     {
        trigger_error("A custom error has been triggered");
      }

?>
خروجی Custom error: [1024] A custom error has been triggered
Error on line 19 in C:\webfolder\test.php
Ending Script


راجع این مطلب سوال یا اشکالی دارید ؟! آن را در انجمن سایت مطرح نمایید ...         >>>>>  ورود به انجمن تخصصی


نطر خودتان درباره این صفحه  :

آیا مطالب این صفحه برای شما مناسب و مفید بوده است :

نام :               
آدرس Email :  

نظر شما :      
سوال امنیتی : جمع سه + پنج چنده ؟