آموزش مدیریت خطا (Error Handling) در PHP


آموزش مدیریت خطا (Error Handling) در PHP :

سیستم مدیریت خطای پیش فرض یا default error handling در PHP بسیار ساده عمل می کند. این سیستم در هنگام بروز خطا، یک پیام هشدار حاوی نام فایل، شماره خط بروز خطا به همراه توصیفی از شرح خطا را به مرور گر ارسال می کند.
در هنگام طراحی اسکریپت ها و نرم افزارهای تحت وب، مدیریت خطا یا errorHandling بخش مهمی از کد می باشد. اگر کد شما نتواند error های احتمالی را چک کند، برنامه تان بسیار غیر حرفه ای به نظر رسیده و می تواند شما را با چالش های امنیتی رو به رو کند.
در این بخش آموزش PHP، مهم ترین متدهای چک کردن خطا در زبان PHP را بررسی خواهیم کرد. این متدهای مدیریت خطا عبارتند از :

  • دستورهای ساده با تابع “die()”.
  • error های خاص و بررسی تحریک کننده خطا (error triggers).
  • آموزش نحوه گزارش کردن خطاها یا (error reporting).

آموزش روش پایه مدیریت خطا PHP-تابع die() :

در کد مثال اول مدیریت خطا، به وسیله اسکریپت زیر برنامه قصد دارد تا یک فایل متنی (text file) را باز کند :

                    

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

  Warning: fopen(welcome.txt) [function.fopen]: failed to open stream:  No such file or directory in C:webfoldertest.php on line 2                  

برای جلوگیری از نمایش پیغام خطایی مثل متن فوق به کاربر، کد را به صورت زیر تغییر داده ایم. در این کد جدید ابتدا برنامه وجود فایل را بررسی کرده و سپس در صورت موجود بودن آن، اقدام به باز کردن فایل می کند:

                    

حال اگر فایل مورد نظر وجود نداشته باشد، برنامه پیغام خطای زیر را صادر می کند :

  File not found                  

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

ایجاد یک مدیریت کننده خطا دلخواه (Custom Error Handling) :

ایجاد یک مدیریت کنده دلخواه خطا (Custom Error Handling) در زبان PHP، کار نسبتا ساده ای است. می توانیم به راحتی یک تابع دلخواه PHP را ایجاد کنیم تا در هنگام بروز خطا، فراخوانی شود.
تابع دلخواهی که برای مدیریت خطا ایجاد می کنیم، بایستی حداقل بتواند دو پارامتر خطا (درجه خطا (error level) و پیام خطا (error message)) را مدیریت کند و تا پارامتر اختیاری را دریافت کند (پارامترهای اختیاری مثل نام فایل، شماره خط کد بروز خطا و محتویات خطا).
ساختار کلی تعریف یک تابع مدیریت کننده دلخواه در PHP به صورت زیر است :

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

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

error_ levelerror_messageerror_fileerror_lineerror_context

تعیین این پارامتر اجباری بوده و درجه گزارش خطا را برای error مورد نظر کاربر تعیین می کند. بایستی یک مقدار عددی باشد که انواع حالت های ان را در جدول بعدی توضیح داده ایم.پارامتر اجباری. این پارامتر پیام خطا مربوط به error رخ داده را تعیین می کند.پارامتر اختیاری. این پارامتر نام تابعی که خطا در آن رخ داده است را مشخص می کند.پارامتر اختیاری. این پارامتر شماره و آدرس خط کدی که خطا در آن رخ داده را تعیین می کند.پارامتر اختیاری. این پارامتر یک آرایه است که نام و مقدار کلیه متغیرهای برنامه را در هنگام بروز خطا ثبت و نگهداری می کند.پارامترهای تابع مدیریت کننده خطا در PHP

E_WARNINGE_NOTICEE_USER_ERRORE_USER_WARNINGE_USER_NOTICEE_RECOVERABLE_ERRORE_ALL

درجه خطاهای غیر مخرب در زمان اجرا است که باعث توقف اجرای اسکریپت نمی شوند.این درجه شامل اخطارهای زمان اجرا می شود. اسکریپت ممکن است چیزی مشاهده کند که ممکن است خطا باشد، یا این که این اشکالات می تواند در روند عادی اجرای اسکریپت رخ دهد.این درجه شامل خطاهای مخربی می شود که توسط کد کاربر رخ داده اند. این نوع خطاها شبیه یک E_ERROR هستند که توسط کاربر و با استفاده از تابع trigger_error() تنظیم شده اند.این درجه شامل اخطارهای غیر مخربی می شود که توسط کد کاربر رخ می دهد. این نوع اخطارها مثل یک E_WARNING هستند که توسط کاربر و با استفاده از تابع trigger_error() تنظیم شده اند.این درجه شامل اعلان های غیر مخربی می شود که توسط کد کاربر رخ می دهد. این نوع اعلان های مشکل توسط کاربر و با استفاده از تابع trigger_error() تنظیم شده اند.این درجه خطا شامل خطاهای مخرب ولی قابل ردیابی است. این نوع error همانند یک E_ERROR است که توسط یک تابع مدیریت خطا (همانند Set_error_handler) شناسایی شده است.این درجه از خطا شامل تمام error های رخ داده در سطح برنامه می شود.پارامترهای تابع مدیریت کننده خطا در PHP

E_USER_ERRORE_USER_WARNINGE_USER_NOTICE

این دسته شامل خطاهای مخربی می شوند که توسط کد کاربر تولید شده اند. در این نوع خطاها دیگر نمی توان برنامه را از نقطه بروز خطا باز گرداند و پردازش اسکریپت متوقف خواهد شد.این نوع خطا شامل اخطارهایی می شود که توسط کد کاربر در زمان اجرا رخ داده؛ ولی باعث توقف اجرای اسکریپت نمی شوند.این درجه خطا، درجه پیش فرض کلیه error های احتمالی بوده و درواقع یک اعلان است که در هنگام بروز خطا در کد در حال اجرا صادر می شود.

دیدگاهتان را بنویسید

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