مدیریت خطا در زبان PHP
۱۵ شهریور ۱۳۹۹
مدیریت خطا (Error Handling) به فرایندی گفته میشود که در آن به یافتن خطاهای موجود در برنامه پرداخته میشود. در این مقاله سعی داریم که جزئیات بیشتری از مفهوم مدیریت خطا و چگونگی انجام آن در برنامههای PHP، در اختیار شما قراردهیم.
همانطور که میدانیم، مدیریت خطاها یک بخش مهم در هنگام ایجاد اسکریپتها و برنامههای وب است، اما این فرایند در زبان PHP بسیار آسان خواهد بود. اگر برنامهای که در حال توسعه آن هستید، فاقد کدی برای بررسی خطاهای بهوجود آمده باشد، ممکن است برنامه شما را در معرض خطرهای امنیتی قراردهد و همچنین میتوان گفت که برنامهتان غیرحرفهای است. در ادامه روشهای مختلفی را برای مدیریت خطاها در زبان PHP بررسی خواهیم کرد:
- استفاده از تابع
die()
- سفارشیسازی و گزارش خطاها
استفاده از تابع die()
باید در زمان توسعه برنامهتان، تمام خطاهای احتمالی را بررسی کرده و اقدامهای لازم را انجام دهید. در ادامه یک نمونه کد با استفاده از تابع die()
قرار گرفته است که میتوانید ببینید چگونه در آن خطای احتمالی را بررسی کردهایم:
<?php
$filePath = "/tmp/test.txt";
If (!file_exists ($filePath)) {
die("File does not founds \n");
} else {
$file = fopen($filePath, 'a+');
Print "opening file successfully \n";
}
?>
سفارشیسازی و گزارش خطاها
همچنین میتوان گفت که ساخت یک تابع سفارشیسازی شده برای مدیریت و گزارش خطاهای بهوجود آمده در زبان PHP، بسیار ساده است. بهسادگی میتوانیم تابعی تعریف کنیم که هر زمان خطایی در برنامهمان رخ داد، از آن تابع برای مدیریت خطاها استفاده شود. این تابع را میتوان بهسادگی با دو آرگومان ورودی تعریف کرد اما میتوانیم بهصورت دلخواه از هر 5 آرگومانی که دریافت میشوند هم استفاده کنیم. آرگومانهای ورودی شامل:
- errno: یک integer است که سطح خطا را مشخص میکند.
- errstr: یک string که حاوی پیام خطا است.
- errfile (اختیاری): پارامتر سوم نام فایلی است که خطا در آن ایجاد شده است.
- errline (اختیاری): یک integer است که شمارهی خطی که در آن خطا ایجاد شده است را در اختیار ما قرار میدهد.
- errcontext: دقت داشته باشید که این مورد در PHP 7.2 منسوخ (DEPRECATED) شده است.
در زبان PHP یک Error Handler داخلی وجود دارد، اما اگر بخواهیم خطاها را به روش خودمان مدیریت کنیم، میتوانیم از تابع set_error_handler()
استفاده کرده و تابع اختصاصی خودمان را توسعه دهیم.
<?php
// define error handler function
function customError($errno, $errstr) {
echo "<b>Error:</b> [$errno] $errstr";
}
// set error handler
set_error_handler("customError");
// make an error
echo($test);
?>
برای اطلاعات بیشتر میتوانید به مستندات رسمی این تابع مراجعه کرده و مثالهای بیشتری از استفاده این تابع را مشاهده کنید.