داغ ترین ویدیو بابلز لرن : هک کلاس های مجازی توسط متین برونسی

ویژگی تصویر

مدیریت استثنا در PHP

  /  PHP   /  مدیریت استثنا در PHP
بنر تبلیغاتی الف
آموزش PHP

در این فصل به مدیریت استثنا در PHP پرداخته ایم.

استثنا یک شیئی هست که خطا یا رفتار غیر منتظره یک اسکریپت PHP را توصیف و مدیریت می کند.

استثنائات توسط بسیاری از توابع و کلاس های PHP ایجاد می شود.

توابع و کلاس های تعریف شده توسط کاربر نیز می توانند استثناء ایجاد کنند.

استثنا ها در PHP راه خوبی برای متوقف کردن یک تابع در هنگام برخورد با داده هایی هستند که نمی توانند از آنها استفاده کنند.

صادر کردن استثنا

دستور throw به یک تابع یا متد تعریف شده توسط کاربر اجازه می دهد تا یک استثنا ایجاد کند.

مثال

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

همانطور که می دانید تقسیم هر عددی بر 0 در ریاضیات تعریف نشده است. بخاطر همین ما یک استثنا تعریف کرده ایم که در همچین شرایطی پیغام خطایی را به کاربر نمایش خواهد داد.

تماشا در حالت تمام صفحه

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

Fatal errorUncaught Exception: Division by zero in C:\webfolder\test.php:4
Stack trace: #0 C:\webfolder\test.php(9):
divide(5, 0) #1 {main} thrown in C:\webfolder\test.php on line 4

دستورات try…catch در PHP

برای جلوگیری از بروز خطای بالا می توانیم از دستورات try...catch برای گرفتن استثنا ها و ادامه فرایند استفاده کنیم.

نحوه استفاده

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
}

مثال

در این مثال یک پیغام هنگام صادر شدن استثنا نمایش خواهیم داد:

تماشا در حالت تمام صفحه

خروجی

Unable to divide.

در مثال بالا با دستور catch مشخص کرده ایم که چه استثنائی باید گرفته شود و نام شیئی که برای دسترسی به استثنا مورد استفاده قرار میگیرد را مشخص کرده ایم.

در مثال بالا نوع استثنا Exception و نام متغیر $e می باشد.

دستورات try…catch…finally در PHP

از دستورات try...catch...finally می توانیم برای گرفتن استثنا استفاده کنیم. قطعه کد درون finally همیشه بدون در نظر گرفتن اینکه آیا استثنا گرفته شده است یا خیر اجرا می شود.

نحوه استفاده

try {
  code that can throw exceptions
} catch(Exception $e) {
  code that runs when an exception is caught
} finally {
  code that always runs regardless of whether an exception was caught
}

مثال

در مثال زیر هنگامی که یک استثنا صادر می شود علاوه بر قطعه کد های درون catch با استفاده از finally یک پیغام دیگر هم نمایش خواهیم داد.


این قسمت/بخشی از محتوا مخفی شده است و فقط برای اعضای وب سایت قابل مشاهده می باشد، لطفاً با حساب کاربری وارد شوید.

خروجی

Unable to divide. Process complete.

مثال

در مثال زیر با وجود اینکه حتی دستور catch را هم تعریف نکرده ایم و استثنایی گرفته نشده یک رشته به عنوان خروجی نمایش داده می شود:

تماشا در حالت تمام صفحه

خروجی

Process complete.

شی استثنا

شی استثنا ( Exception Object ) شامل اطلاعاتی در رابطه با پیغام خطا یا رفتار غیر منتظره ای که تابع با آن مواجه شده است می شود.

نحوه استفاده

new Exception(message, code, previous)

مقادیر پارامتر ها

پارامترتوضیحات
messageاین پارامتر اختیاری است و شامل رشته ای می شود که توضیح می دهد چرا استثنا صادر شده است.
codeاین پارامتر اختیاری است و شامل یک عدد صحیح می شود که می تواند برای تشخیص آسان این استثنا از سایر موارد مشابه استفاده شود.
previousاین پارامتر اختیاری است ، اگر این استثنا در یک بلوک catch یک استثنا دیگر صادر شده باشد ، توصیه می شود آن استثنا را به این پارامتر منتقل کنید.

متد ها

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

متدتوضیحات
getMessage()رشته ای که شامل توضیحات مربوط به صادر شدن استثنا می شود را بر می گرداند.
getPrevious()اگر این استثنا توسط یک استثنا دیگر ایجاد شده باشد ، این متد استثنا قبلی را بر می گرداند در غیر این صورت مقدار null را بر می گرداند.
getCode()کد استثنا را بر می گرداند.
getFile()مسیر کامل فایلی که در آن استثنا صادر شده است را بر می گرداند.
getLine()شماره خط کدی که استثنا را صادر کرده است بر می گرداند.

مثال

مثال زیر با استفاده از متد ها اطلاعاتی در رابطه با استثنا صادر شده بر می گرداند.


این قسمت/بخشی از محتوا مخفی شده است و فقط برای اعضای وب سایت قابل مشاهده می باشد، لطفاً با حساب کاربری وارد شوید.

خروجی

Exception thrown in /home/TwT0ln/prog.php on line 8: [Code 1] Division by zero

آیا این مطلب برای شما مفید بود ؟

خیر
بله
بنر تبلیغاتی ج