PHP尝试捕获不工作的PHP 7.0.4

时间:2016-03-10 11:16:28

标签: php exception

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版本不起作用。

3 个答案:

答案 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的文档(在PH​​P 7中引入)解释了:

  当尝试将数字除以零时,抛出

DivisionByZeroError

不幸的是,似乎仅在$x % 0intdiv($x, 0)上抛出异常。使用常规除法运算符$x / 0除以零并不会抛出异常,它仍然以与PHP 5相同的方式工作(即触发警告)。

在PHP支持网站上报告了这种情况的bug #71306,但它被正式归类为"而不是错误"因为除法运算符/生成浮点数,浮点表示法提供对±INFNaN的支持。

总之,在PHP 7中,使用/除以零会触发警告并返回INF-INF。当分频器为零时,只有模运算符(%)和整数除法(函数intdiv())抛出DivisionByZeroError

答案 2 :(得分:-1)

除以零会返回警告,并且异常处理程序无法捕获警告。请参阅https://stackoverflow.com/a/6040555/1441858

道歉,我现在看到PHP7 throws an error on division by zero