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版本不起作用。
答案 0 :(得分:2)
我终于找到了问题的解决方案。 Sample: 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';
}
答案 1 :(得分:0)
首先,您发布的代码在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支持网站上报告了这种情况的bug #71306,但它被正式归类为"而不是错误"因为除法运算符/
生成浮点数,浮点表示法提供对±INF
或NaN
的支持。
总之,在PHP 7中,使用/
除以零会触发警告并返回INF
或-INF
。当分频器为零时,只有模运算符(%
)和整数除法(函数intdiv()
)抛出DivisionByZeroError
。
答案 2 :(得分:-1)
除以零会返回警告,并且异常处理程序无法捕获警告。请参阅https://stackoverflow.com/a/6040555/1441858。