try{
//division by zero
$number = 5/0;
}
catch(Exception $ex){
echo 'Got it!';
}
Warning: Division by zero in D:'Sistemim'Server'WebSite'mckportal'test'hatakont.php on line 13
可能是什么原因?我该如何解决?他使用的是 PHP 5.3。7.0.4 版本不起作用。
我终于找到了解决问题的方法。示例:https://3v4l.org/jk7BS
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if (!!$errstr) {
throw new Exception($errstr);
}
return false;
}
set_error_handler('myErrorHandler');
编写此代码后,您可以控制,例如 Java 和其他语言中的异常。
function myErrorHandler($errno, $errstr, $errfile, $errline) {
if (!!$errstr) {
throw new Exception($errstr);
}
return false;
}
set_error_handler('myErrorHandler');
try{
//division by zero
//$number = 5/0;
unlink("c:'boot.bat");
$a=5+3;
echo $a;
}
catch(Exception $ex){
echo "Dotum bi hata yapmış olmalısın mesaj bu:".$ex->getMessage(), ' : Hadi kolay gelsin sana canım';
}
首先,您发布的代码在 PHP 5 和 PHP 7 上的工作方式相同。它没有用于在 PHP 5 上抛出异常;此功能(抛出异常而不是触发运行时错误和警告)是在 PHP 7 中引入的。
你可以在 PHP 5 中(在 PHP 7 中仍然可以)安装一个错误处理程序,将错误转换为异常并抛出它们。已经有几个链接(在其他答案和注释中)指向显示此技术的答案。
新类DivisionByZeroError
的文档(在 PHP 7 中引入)解释道:
当尝试将数字除以零时,将抛出
DivisionByZeroError
。
不幸的是,似乎异常仅在$x % 0
和intdiv($x, 0)
上抛出。使用常规除法运算符 $x / 0
除以零不会引发异常,它的工作方式仍然与在 PHP 5 上的工作方式相同(即触发警告)。
在PHP支持站点上报告了一个错误#71306,但它被正式归类为"不是错误",因为除法运算符/
产生浮点数,浮点表示形式提供对±INF
或NaN
的支持。
总之,在 PHP 7 中,使用 /
除以零会触发警告并返回 INF
或 -INF
。只有模运算符(%
)和整数除法(函数intdiv()
)在除法器为零时抛出DivisionByZeroError
。
除
以零将返回警告,并且异常处理程序无法捕获警告。请参阅 https://stackoverflow.com/a/6040555/1441858。
抱歉,我现在看到 PHP7 在除以零时抛出错误。