تعداد بازدید: 237

مدیریت خطا و استثنا در php

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

به طور کل خطاها را در php به دو دسته تقسیم می کنیم. خطاهایی که از ادامه برنامه جلوگیری می کند (terminate execution) و خطاهایی که پس از آن برنامه ادامه پیدا می کند (continue execution).

  • terminate execution
    • Parse Error : خطای زمان اجرا مثل syntax.مثلا نگذاشتن , ' " )( {} []
    • Fatal Error : خطاهای مثلا redeclare function , call undefined fucntion , require file
  • continue execution
    • Warning : خطاهایی مثل اشتباه در پارامتر دهی ، include ، header error
    • Notice : استفاده از متغیر یا ایندکس تعریف نشده (E_NOTICE)

Error Level Constants

سطوح مختلفی از خطا داریم که برای هر یک یک ثابت در نظر گرفته ایم . در تنظیمات PHP در فایل php.ini ما می توانیم برای نمایش خطاها (پارامتر error_reporting) از ثوابت زیر استفاده کنیم:

E_ALL : تمامی errors و warning

E_ERROR : خطاهای Fatal و زمان اجرا (Parse)

E_PARSE : خطای زمان اجرا (Syntax)

E_NOTICE : خطای notices

Error Handling Functions

trigger_error : اگر بخواهیم می توانیم خطا تولید کنیم. این تابع دو پارامتر دارد که اول متن خطا و دوم نوع آن می باشد:

set_error_handler : می توان در زمان اجرای خطا یک تابع را اجرا کند که آن تابع پارامتر های متفاوتی می گیرد.

پارامتر اول تابع callable یک تابع است که پارامتر های زیر را می گیرد تا با توجه به آن اقدامات لازم را انجام دهد:

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

error_reporting : نمایش خطا در این برنامه به چه شکل باشد. پارامتر ورودی آن یکی از Error Types است.

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

Exceptions

یک process ممکن است در اسنثنایی خطا داشته باشد مثلا به ازای برخی پارامتر ها خطا بخورد که قوانین خطا می تواند توسط ما یا php تعیین گردد.همان طور که خطاهای پیش فرض و custom داشتیم اسنثنا های پیش فرض و custom داریم(منظور منطق اجرای استثنا است).

به طور مثال عملیات تقسیم در ریاضیات عملیاتی مجاز است. اما استثنایی در این میان وجود دارد به نام division by zero که اعداد تقسیم بر صفر غیر مجاز است.

Exception یک کلاس پیش فرض php است که متدهای کاربردی دارد. زمانی که یک Exception پرتاب (throw) می شود یک شئ از روی این کلاس ساخته می شود. این شئ باید گرفته شود.

زمانی که یک استثنا پرتاب می شود (throw) از ادامه برنامه جلوگیری می کنند مگر اینکه توسط catch گرفته شوند. برای گرفتن این شئ از بلوک try…catch استفاده می کنیم. ساختار آن به شکل زیر می باشد

قسمت finally در پایان چه به ازای اجرای تابع یا دریافت Exception اجرا می گردد.

پس Exception توسط سازنده (نویسنده پروسه که می تواند تابع یا متدی از یک کلاس باشد) تعبیه و در زمان های لازم پرتاب می شود و توسط استفاده کننده (استفاده کننده از تابع یا متدی از یک شئ) catch می شود.

اگر در پروسه ای که استفاده می کنید از Exception استفاده شده بود آن را در بلوک try…catch استفاده شده است.

اگر تابع را در بلوک try…catch استفاده نمی کردیم خطای (Fatal Error) زیر را دریافت می کردیم

Exception یک کلاس است و می توان از آن فرزند آورد. فرزند یعنی یک Custom Exception که ویژگی های منحصر به فرد تری داشته باشد :

به طبع آن بعد از تعریف کلاس می توان از آن استفاده کرد :

 

مطالب مشابه

کوکی ها و نشست ها و راه های ذخیره سازی داده د ر php

Cookie و Session در php

زمانی که بحث ذخیره اطلاعات که مطرح میشه ما امکاناتی برای ذخیره اطلاعاتمون داریم: پایگاه داده (DataBase) فایل ها...

FileSystem در PHP

رفتار تابعی در مقابله با فایل ها و دایرکتوری ها دقیقا مثل رفتار نرم افزار های FileManager ها در سیستم عامل هاست. Action...

عبارات منظم یا عبارات باقاعده

عبارات منظم RegularExpression

در این قسمت قصدداریم تا با یکی از مباحث پیشرفته یعنی عبارات منظم یا عبارات باقاعده (regular expression) آشنا بشیم....

strings-function in php

رشته ها در PHP

توابع مربوط به رشته ها در php کاربردهای زیادی دارند از جمله ساخت رشته های رمزنگاری شده و همچنین ساخت خلاصه متن و تبدیل...

اشتراک گذاری :

مدیر وب سایت گنوتک . برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress و فریم ورک محبوب لاراول علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای مدیریت خطا و استثنا در php

پاسخی بگذارید

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