دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۳
  • آذر

جلسه ۲۵ : مدیریت خطا در PHP

  • دسته‌بندی‌ها :
جلسه ۲۵ : مدیریت خطا در PHP
    • جزئیات
    • نوع محتواآموزش تصویری

      با عرض سلام خدمت کاربران محترم وب سایت پی وی لرن. در این جلسه قصد داریم تا به مبحث مدیریت خطا (Error Handling) در php بپردازیم.
      مدیریت خطا در php به طور پیش فرض بسیار ساده است.

      یک پیغام خطا با نام فایل، شماره خط و توضیحات پیام خطا به مرورگر ارسال می شود.

      مدیریت خطا در php

      مدیریت خطا در php

      مدیریت خطا در PHP

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

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

      • تابع ساده ()die
      • علت ایجاد خطا
      • گزارش خطا

       

      مدیریت خطا پایه: استفاده از تابع ()die

      در اولین مثال کدی را نشان می دهیم که یک فایل متنی را باز می کند:

      مثال : 

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

      مثال : 

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

      مثال : 

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

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

       

      ایجاد یک مدیریت کننده خطا سفارشی

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

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

      ساختار تابع:

      مثال : 

      توضیحاتپارامتر
      سطح گزارش خطا برای خطایی که کاربر تعریف کرده را مشخص می کند.باید مقداری عددی باشد.در جدول زیر سطوح گزارش خطا احتمالی آمده استerror_level
      پیام خطا را مشخص می کندerror_message
      نام فایلی را که خطا در آن اتفاق افتاده است را مشخص می کندerror_file
      شماره خطی را که خطا در آن اتفاق افتاده است را مشخص می کند.error_line
      یک آرایه از متغیر ها و مقادیرشان که در هنگام رخ دادن خطا استفاده می شدند را مشخص می کند.error_context

       

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

      توضیحانثابتمقدار
      خطاهای کم اهمیت زمان اجرا. اجرای اسکریپت متوقف نمی شودE_WARNING۲
      اطلاعیه های زمان اجرا. اسکریپت در زمان اجرا چیزی را پیدا می کند که می تواند خطا باشد. معمولا در هنگام اجرای اسکریپت اتفاق می افتدE_NOTICE۸
      خطای خطرناک تولید شده توسط کاربر. مانند یک نوع E_ERROR می باشد که توسط برنامه نویس با تابع ()trigger_error به وجود آمده استE_USER_ERROR۲۵۶
      هشدار کم اهمیت تولید شده توسط کاربر. مانند یک نوع E_WARNING می باشد که توسط برنامه نویس با تابع ()trigger_error به وجود آمده استE_USER_WARNING۵۱۲
      اطلاعیه تولید شده توسط کاربر. مانند یک نوع E_NOTICE می باشد که توسط برنامه نویس با تابع ()trigger_error به وجود آمده استE_USER_NOTICE۱۰۲۴
      خطای خطرناک قابل گرفتن. مانند یک E_ERROR است اما می تواند توسط مدیریت کاربر تعریف شده گرفتار شوذ.E_RECOVERABLE_ERROR۴۰۹۶
      تمامی خطا ها و هشدار هاE_ALL۸۱۹۱

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

      مثال : 

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

      حالا که تابع مدیریت خطا را ساختیم باید تصمیم بگیریم که چه موقع آن را به کار بگیریم.

       

      تنظیم مدیریت کننده خطا

      ما قصد داریم تا تابع بالا را به مدیریت کننده خطا پیش فرض در زمان اجرای اسکریپت تبدیل کنیم.

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

      مثال : 

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

      مثال

      می خواهیم تابع را نوسط چاپ متغیری که وجود ندارد امتحان کنیم:

      مثال : 

      خروجی به شکل زیر می باشد:

      مثال : 

      راه اندازی یک خطا

      وقتی کاربر میتواند داده هایی را وارد کند، بهتره که وقتی ورودی غیر مجاز وارد کرد یک خطا توسط تابع ()trigger_error به راه بیاندازیم.

      مثال

      مثال : 

      خروجی به شکل زیر می باشد:

      مثال : 

      یک خطا در هر کجای اسکریپت که بخواهید می تواند راه اندازی شود. و با اضافه کردن پارامتر دوم می توانید سطح خطا را نیز مشخص کنید.

      انواع خطا ممکن:

      • E_USER_ERROR
      • E_USER_WARNING
      • E_USER_NOTICE

       

      مثال

      در مثال زیر اگر متغیر test$ بزرگتر از ۱ باشد یک E_USER_WARNING رخ می دهد:

      مثال : 

      خروجی به شکل زیر است:

      مثال : 

       

      ارسال یک پیام خطا با ایمیل

      در مثال زیر ما یک ایمیل محتوی پیام خطا را ارسال می کنیم:

      مثال : 

      خروجی کد بخ شکل زیر می باشد:

      مثال : 

      و ایمیل دریافتی باید حاوی پیام زیر باشد:

      مثال : 

      خب جلسه مدیریت خطا در php نیر به پایان رسید.
      در جلسه بعد به مبحث مدیریت استثنا در php خواهیم پرداخت.

      QR:  جلسه ۲۵ : مدیریت خطا در PHP
      به اشتراک بگذارید


      دیدگاه کاربران
      1. تصویر کاربر
        • تصویر کاربر