در حال بارگذاری ... .
مدیریت خطا در php

php نیز همانند زبان های برنامه نویسی دیگر ازجمله C# وجاوا و … یک روش فوق العاده جذاب برای اداره کردن خطاها ارائه نموده است که با دستور try catch انجام می شود ؛ این روش بدین صورت است که ، اگر خطای خاص و استثنایی (exceptional) رخ دهد، مدیریت خطاها روندِ عادیِ اجرایِ کد، را تغییر می دهد ؛ که استثنا یا Exception نام دارد .
مدیریت خطا در دو بلوک اصلی try و  catch انجام می‌شود. البته در مواقعی بلوک دیگری به نام finally که در آخرین بلوک بعد از دو بلوک قبلی قرار میگیرد اجرا میشود.
برای هر یک از بلوک های try در اسکریپت php باید حداقل یک بلوک catch وجود داشته باشد.حتی می توانیم چندین بلوک catch نیز برای یک try به منظور مدیریت انواع exception ها در php داشته باشیم.

مراحل یک مدیریت خطا

وقتی یک استثنا راه اندازی می شود چنین چیزهایی اتفاق می افتد:

  • وضعیت کنونی کد، ذخیره می شود.مدیریت خطا در پی اچ پیhttp://pooyadev.ir/wp-content/uploads/2019/08/eh.png
  • ادامه ی اجرای کد به یک تابع دلخواه (سفارشی) و تعیین شده، که استثنا را مدیریت می کند، منتقل می شود.
  • بسته به وضعیت، ممکن است، بررسی کننده استثنا یا handler اجرای کد را از نقطه ای که کد را ذخیره کرده است از سر بگیرد یا به اجرای برنامه خاتمه دهد یا برنامه را از یک مکان دیگر در کد ادامه دهد.

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

اگر php برای یک استثنا، بلوک تطابقی آنرا نیابد، یک fatal error)خطای مهلک)، همراه با پیغام “Uncaught Exception” یعنی “استثنا یافت نشد” را صادر می کند.

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

  • Try – تابعی که از یک استثنا استفاده میکند، باید در بلوک ((try باشد. اگر استثنا اجرا نشود، فرآیند اجرای کد به صورت معمول ادامه خواهد یافت. اما اگر استثنا اجرا شود، در اصطلاح می گوییم که آن استثنا پرتاب یا thrown شده است.
  • بخش Throw مشخص کننده نحوه فعال سازی یک exception است.
  •  بلاک ‘Catch’ استثنای رخ داده شده را می گیرد و یک شیء ‘$e’ حاوی اطلاعات Exception را ایجاد می کند.

مثال:

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

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

که مدیریت استثنا کد به صورت زیر در خواهد آمد.

استاندارد در PHP یا PSR

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

مایل به ثبت دیدگاه هستید؟

آخرین دیدگاه‌ها

آخرین دیدگاه‌ها

بایگانی‌ها