PHP Exceptions

در PHP، Exception روشی برای مدیریت خطاهاست.
به جای اینکه اسکریپت در صورت بروز خطا متوقف بشه، می‌تونیم اون رو "catch" کنیم و رفتار دلخواه نشون بدیم.

1️⃣ ساختار try / catch

<?php try { // کدی که احتمال خطا داره throw new Exception("خطایی رخ داده است!"); } catch (Exception $e) { // مدیریت خطا echo "پیام خطا: " . $e->getMessage(); } ?>

📌 خروجی:

پیام خطا: خطایی رخ داده است!

2️⃣ استفاده از finally

بلوک finally همیشه اجرا میشه، چه خطا رخ بده چه نده.

<?php try { echo "شروع عملیات<br>"; throw new Exception("اشکال پیش آمد"); } catch (Exception $e) { echo "خطا: " . $e->getMessage() . "<br>"; } finally { echo "بخش finally همیشه اجرا می‌شود"; } ?>

3️⃣ گرفتن اطلاعات بیشتر از Exception

متدهای مهم:

  • ()e->getMessage → پیام خطا

  • ()$e->getCode → کد خطا

  • ()$e->getFile → فایلی که خطا در آن رخ داده

  • ()$e->getLine → شماره خط

<?php try { throw new Exception("ورودی نامعتبر", 400); } catch (Exception $e) { echo "پیام: " . $e->getMessage() . "<br>"; echo "کد: " . $e->getCode() . "<br>"; echo "فایل: " . $e->getFile() . "<br>"; echo "خط: " . $e->getLine(); } ?>

4️⃣ ایجاد Exception سفارشی

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

<?php class MyException extends Exception {} try { throw new MyException("خطای سفارشی من"); } catch (MyException $e) { echo "Custom Exception: " . $e->getMessage(); } ?>

5️⃣ چندین Catch برای انواع Exception

<?php class MyException extends Exception {} class OtherException extends Exception {} try { throw new OtherException("نوع دیگر خطا"); } catch (MyException $e) { echo "MyException: " . $e->getMessage(); } catch (OtherException $e) { echo "OtherException: " . $e->getMessage(); } catch (Exception $e) { echo "خطای عمومی: " . $e->getMessage(); } ?>

جمع‌بندی:

  • try → کدی که ممکنه خطا بده

  • catch → گرفتن و مدیریت خطا

  • finally → همیشه اجرا میشه

  • می‌تونیم Exception سفارشی تعریف کنیم

  • میشه چندین نوع Exception رو مدیریت کرد