کنترل کردن خطاها با استفاده از set_error_handler در php

سلاااااااااام. خوبید؟ در این آموزش میخوام نحوه ی استفاده از تابع set_error_handler رو به شما دوستان گرامی اموزش بدم. این تابع برای مدیریت خطاهایی که در برنامه ی شما و در php رخ میده استفاده میشه.

تابع set_error_handler هنگامی که خطایی رخ بده میتونه دستوراتی که مورد نظر شما هست رو اجرا کنه! نحوه ی استفاده از این تابع به صورت زیر است:

همونطور که میبینید تابع set_error_handler دوتا مقدار ورودی میگیره! مقدار ورودی اول یا error_handler نام یک تابع خواهد بود! این تابع هنگامی که خطایی رخ بده فراخوانی خواهد شد. مقدار دوم هم نوع ارور رو مشخص میکنه! مقدار دوم رو میتونید خالی بزارید , در صورت خالی گذاشتن پارامتر دوم تابعی که به عنوان error_handler معرفی کردید برای همه ی خطاها فراخوانی میشه اما در صورتی که error_types رو مشخص کنید تابع شما فقط برای همون نوعی از خطا که معرفی کردید فراخوانی میشه. مقادیری که برای error_types میتونید استفاده کنید به صورت زیر هستند:

  • E_ERROR : خطاهای fatal یا مرگبار در هنگام اجرای برنامه رو شامل میشه (runtime fatal errors)
  • E_PARSE : خطاهای هنگام پارس کردن کد
  • E_CORE_ERROR : خطاهای هسته ی php
  • E_CORE_WARNING : اخطارهای هسته ی php
  • E_COMPILE_ERROR : ارور های در زمان کامپایل
  • E_COMPILE_WARNING : اخطارهای در هنگام کامپایل
  • E_ALL : همه ی خطاها رو شامل میشه

نکته ی دیگه ای که باقی میمونه این هست که پارامتر error_handler میتونه ۵ مقدار ورودی بگیره که به ترتیب شماره خطا , متن خطا , فایل خطا , خط خطا , محتوای خطا (توضیحات کامل خطا) رو شامل میشه. حالا به مثال زیر دقت کنید:

در مثال بالا ابتدا یه تابع با نام on_error تعریف کردیم که هنگام خطا قراره اجرا بشه! ۴ تا پارامتر (از ۵ پارامتر که میتونیم داشته باشیم) رو براش تعیین کردیم که به ترتیب num شماره ی خطا , Str متن خطا , file نام فایلی که در ان خطا رخ داده و line خطی که خطا در ان رخ داده رو میگیره.

حالا این تابع on_error رو توی تابع set_error_handler معرفی میکنیم 😀 در خط بعدی توسط دستور print یه خطا ایجاد میکنیم , خطا به خاطر این ایجاد میشه که ما پرانتز های جلوی دستور print رو نذاشتیم! حالا به علت خطا تابع on_error اجرا میشه و خطای ما رو نشون میده توی صفحه 😀 اگه اموزش مربوط به error_log رو خونده باشید (اینجا کلیک کنید) میتونید با ترکیب error_log و تابع set_error_handler ارور ها رو برای خودتون ذخیره کنید و یا اینکه به ایمیل خودتون بفرستید! به مثال زیر دقت کنید:

در دستورات بالا هنگامی که خطا رخ بده این خطا به ایمیل من ارسال میشه 😀 خیلی باحال و ساده!

امیدوارم که از این اموزش لذت برده باشید , دوستانی که سوال یا مشکلی دارند از انتهای همین پست در بخش نظرات مطرح کنند تا پاسخ بدم.

پیروز و سربلند باشید.

به اشتراک بگذارید:Email this to someoneShare on FacebookTweet about this on TwitterShare on Google+Digg thisShare on LinkedInPin on PinterestShare on StumbleUponFlattr the authorShare on RedditBuffer this pageShare on TumblrPrint this pageShare on YummlyShare on VK

می‌خواهید دیدگاهتان را بیان کنید؟