PHP 异常处理问题



我只是想在try-catch块周围放一个算术表达式。

这是我尝试过的:

try 
{
$result = 4/0;
} 
catch (Exception $e)
{
d($e->getMessage());
}

但是不是打印$e->getMessage(),而是显示Internal Server Error Division By Zero,如果我不使用任何 try-catch,这是相似的。

我做错了什么?

你不能在普通算术上捕获 DivisionByZeroError,因为 PHP 认为这是一个警告,而不是一个错误。相反,您需要设置一个错误处理程序来查找它,例如

function handler($errno, $error) {
if ($error == "Division by zero") {
echo "Error $errno! $errorn";
return;
}
// hand processing back to the standard handler
return false;
}
set_error_handler('handler');
$result = 4/0;

输出:

Error 2! Division by zero

请注意,如果这不是您要查找的错误,则错误处理程序应将控制权返回给标准处理程序(通过返回false(。

你必须使用这个:

try 
{
$result = intdiv(4, 0);
}
catch(DivisionByZeroError $e)
{
d($e->getMessage());
}

PHP 手册 : http://php.net/manual/en/class.divisionbyzeroerror.php (适用于PHP 7及以上版本(

更新:使用intdiv()- 整数除法(适用于PHP 7及以上版本(

相关内容

最新更新