دوباره راه اندازی استثناها
بعضی مواقع ممکن است مایل باشید که یک استثنا به صورتی متفاوت از آنچه که استاندارد است بررسی شود. این امر با راه اندازی یک استثنا برای بار دوم از داخل بلاک catch امکان پذیر است.
یک اسکریبت خوب، باید خطاهای سیستمی را از کاربران معمولی پنهان کند، چون نمایش این خطاها برای برنامه نویس ها کاربرد دارد و برای کاربران معمولی جالب نیست، یک ایده خوب برای ساخت چنین پیغام هایی، دوباره راه اندازی استثناهاست.
مثال:
<?php
class customException extends Exception
{
public function errorMessage()
{
$errorMsg = $this->getMessage().' is not a valid E-Mail address.';
return $errorMsg;
}
}
$email = "
try
{
try
{
if(strpos($email, "example") !== FALSE)
{
throw new Exception($email);
}
}
catch(Exception $e)
{
//استثنا دوباره راه اندازی می شود
throw new customException($email);
}
}
catch (customException $e)
{
//display custom message
echo $e->errorMessage();
}
?>
توضیح مثال:
- بلاک try بک بلاک try دیگر را در خود جای داده است و این امکان را فراهم می کند تا از بلاکِ try داخلی یک استثنا که قبلاً راه اندازی شده را دوباره راه اندازی کرد.
- اگر متغییر ایمیل شامل زیر رشته "example" باشد استثنا برای بار اول راه اندازی می شود.
- بلاکِ catch اولی(Exception) استثنا را مهار کرده و در ادامه استثنای customException را راه اندازی می کند.
- بلاکِ catch دومی(customException) بلافاصله بعد از مهار کردن استثنا، پیغام مناسب را چاپ می کند.