به کمک نیاز دارید؟

خدمات تخصصی

جستجو
این کادر جستجو را ببندید.
مدیریت کننده خطا

طراحی مدیریت کننده خطاها ( Error Handler ) در PHP

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

  • شدت اهمیت خطا ( error level ) .
  • پیام خطا ( error message ) .

 

حتما بخوانید: فعال‌سازی نمایش خطا در PHP

 

همچین چندین پارامتر اختیاری نیز می تواند داشته باشد :

  • نام فایل ( file name ) .
  • شماره خطی از برنامه که خطا در آن رخ داده است ( line number ) .
  • محتوای خطا ( error context ) .

شکل کلی یک تابع طراحی شده برای مدیریت خطا در 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 همه نوع خطا و اخطار را شامل می شود .

نحوه طراحی یک مدیریت کننده خطا :

تابع زیر یک مدیریت کننده خطای معمولی را نشان می دهد که میزان شدت اهمیت خطا و پیام آن را در خروجی چاپ می کند :

syntax function customError( $errno , $errstr )
{
echo “Error : [$errno] $errstr “;
echo “Ending Script”;
die( );
}

هنگامی که خطایی رخ می دهد ، تابع فوق شدت اهمیت خطا را توسط پارامتر $errno و پیام خطا را توسط پارامتر $errstr دریافت کرده و در خروجی نشان می دهد .
اکنون که تابع مدیریت خطا را طراحی کردیم ، باید کد فراخوان آن را در جاهایی که می خواهیم ، قرار داده تا در صورت بروز خطا ، تابع فوق فراخوانی شود .

 

حتما بخوانید: ذخیره یا ارسال پیام های خطا در PHP

 

تنظیم فراخوان کننده تابع مدیریت خطا ( event handler ) :

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

syntax set_error_handler( ” customError ” ) ;

مثال عملی کاملتر :

مثال : در مثال زیر ، پس از اینکه تابع مدیریت کننده خطا پیش فرض را برای برنامه تعیین کردیم ، در خط آخر مثال ، به برنامه دستور داده ایم تا مقدار متغیری که تعریف نشده است را چاپ کند !! این کار باعث بروز یک خطا شده و تابع مدیریت خطا را فراخوانی می کند :

syntax <?php
// تابع مدیریت کننده خطا
function customError($errno, $errstr)
{
echo “<b>Error:</b> [$errno] $errstr”;
}// تعیین تابع پیض فرض برای مدیریت خطا
set_error_handler(“customError”);// بروز و فراخوانی خطا
echo($test);
?>

پس از اجرای کد فوق و بروز خطا ، پیام زیر به عنوان پیام خطا توسط تابع ( ) customError اعلام می شود .

syntax Error : [8] Undefined variable : test

 

با دریافت « مشاوره برنامه‌نویسی، وب و سئو » از کارشناسان جوان حرفه‌ای و باتجربه ساکوراد؛ موفقیت کسب و کار، رونق فروش و افزایش درآمد خود را تضمین کنید!

 

و اما کلام آخر…

با این روش‌ها، شما می‌توانید یک سیستم مدیریت خطای کامل در PHP ایجاد کنید که به شما اجازه می‌دهد تا به طور مؤثر با خطاها و استثناها برخورد کرده و اطلاعات مفیدی را به کاربران و مدیران سیستم ارائه دهید. این کار نه تنها به عیب‌یابی کمک می‌کند بلکه تجربه کاربری بهتری نیز فراهم می‌آورد.

تصویر دکتر علی قوامی
دکتر علی قوامی
دانش‌آموخته دکترای تخصصی (PhD) کارآفرینی فناوری، بنیانگذار و مدیر گروه بین‌المللی کسب و کار ساکوراد با بیش از ۲۰ سال تجربه بعنوان کوچ، مدرس، مشاور و منتور در حوزه‌های مختلف راه‌اندازی و توسعه کسب‌وکار در ۱۵ کشور جهان هستم. در تلاشم تا تجربیات ذی‌قیمت خود را با شما دوستان عزیزم به اشتراک گذارم.
پیشنهاد بر اساس سلیقه شما

مسیریابی تحصیلی - شغلی (آنلاین)

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

سئوالات و نظرات ارزشمند خود را با ما مطرح کنید

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

کلینیک مشاوره کسب و کار

ارائه‌ی خدمات کوچینگ، مشاوره و منتورینگ توسط برترین متخصصان جوان

هاست سنتر حرفه‌ای

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

کانال یوتیوب

آموزش‌ها و نکات کلیدی ما را دنبال کنید

کانال تلگرام

اخبار و تخفیفات گروهی ما را دنبال کنید

صفحه اینستاگرام

آموزش‌ها و تخفیفات گروهی ما را دنبال کنید

راهنمای گام به گام تا دریافت مشاوره

گام اول

انتخاب حوزه تخصصی مدنظر

گام دوم

بررسی رزومه مشاوران مرتبط

گام سوم

انتخاب مشاور با تخصص مدنظر

گام چهارم

تکمیل فرم و ثبت درخواست

گام پنجم

پرداخت حق‌الزحمه مشاور

گام ششم

تماس با شما برای تعیین وقت

گام هفتم

برقراری ارتباط شما با مشاور