مدیریت خطا در زبان 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);
?>
برای اطلاعات بیشتر میتوانید به مستندات رسمی این تابع مراجعه کرده و مثالهای بیشتری از استفاده این تابع را مشاهده کنید.
توسعهدهندگان دربارهی ما چه میگویند
تجربه کار باliara_cloud@امروز خیلی خوب بود. یکی از سرویس هام رو منتقل کردم روش و راضیم. انقد سریع و جذاب کارم راه افتادم اصن باورم نمیشد! برعکس سرویس های PaaS دیگه با اون همه پیچیدگیشون. دمتون گرم
...
MohammadReza
keikaavousi
بعد از بسته شدن @fandoghpaas و ناراحتی همهمون از اینکه یه سرویس خوب و صادق نمیتونه از پس هزینهها بر بیاد، سرویسم رو منتقل کردم به پاس لیارا (https://liara.ir @liara_cloud) . تجربه راحت و خوب. تفاوتهایی داشت که کمی کار میخواست ولی تا الان کاملا راضی.
jadi
jadi
یه خسته نباشید باید به تصمیمliara_cloud@بگم،
بعد از چندین روز سرکله زدن با سرویس های مشابه بالاخره تصمیم گرفتم لیارا رو امتحان کنم و باور نمیشه ۱۰ دقیقه بیشتر وقت نبرد،
دمتون گرم.
Arch
EbadiDev
واسه سرویس PaaS با اختلاف لیارا بهترین رابط کاربری داره و یکی از مزیتهای سرویس دیتابیسشون اینه که خودشون به صورت دورهای بکآپ میگیرن.
...
Ali Najafi
me_ali_najafi
یکی از کارهای خوبی که جدیداً میکنم اینه که یه دیتابیس روی لیارا میسازم و به پروژه وصل میکنم اینطوری هم خونه و هم محل کار دیتابیس بروز رو دارم و راحت میتونم ادامه بدم کار روliara_cloud@
Navid
1navid
عاشقliara_cloud@شدم درسته در حد AWS نیست ولی خب تجربه خوبی واسه پروژه های داخل ایران ارائه میده، میتونم رو CD هم اجراش کنم
Amir H Shekari
vanenshi