Php try catch无法运行PHP7.0.4

Php try catch无法运行PHP7.0.4,php,exception,Php,Exception,原因可能是什么? 我该怎么修理? 他正在使用PHP5.3。 7.0.4版本不起作用。除以零返回警告,异常处理程序无法捕获警告。请看 很抱歉,我现在明白了。除以零返回警告,而异常处理程序无法捕获警告。请看 抱歉,我现在明白了。首先,您发布的代码在PHP5和PHP7上的工作原理相同。它没有在PHP5上抛出异常;这个功能(抛出异常而不是触发运行时错误和警告)是在PHP7中引入的 您可以在PHP5中(现在仍然可以在PHP7中)安装一个错误处理程序,将错误转换为异常并抛出它们。已经有几个链接(在其他答案和

原因可能是什么? 我该怎么修理? 他正在使用PHP5.3。 7.0.4版本不起作用。

除以零返回警告,异常处理程序无法捕获警告。请看

很抱歉,我现在明白了。

除以零返回警告,而异常处理程序无法捕获警告。请看


抱歉,我现在明白了。

首先,您发布的代码在PHP5和PHP7上的工作原理相同。它没有在PHP5上抛出异常;这个功能(抛出异常而不是触发运行时错误和警告)是在PHP7中引入的

您可以在PHP5中(现在仍然可以在PHP7中)安装一个错误处理程序,将错误转换为异常并抛出它们。已经有几个链接(在其他答案和评论中)指向显示此技术的答案

新类的文档(在PHP7中引入)解释了:

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

不幸的是,异常似乎只在
$x%0
intdiv($x,0)
上引发。使用常规除法运算符
$x/0
进行的零除法不会引发异常,它的工作方式与在PHP5上的工作方式相同(即触发警告)

PHP支持网站上有关于这种情况的报告,但它被正式归类为“非bug”,因为除法运算符
/
生成一个浮点数,并且浮点数表示为
±INF
NaN
提供支持


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

首先,您发布的代码在PHP5和PHP7上的效果相同。它没有在PHP5上抛出异常;这个功能(抛出异常而不是触发运行时错误和警告)是在PHP7中引入的

您可以在PHP5中(现在仍然可以在PHP7中)安装一个错误处理程序,将错误转换为异常并抛出它们。已经有几个链接(在其他答案和评论中)指向显示此技术的答案

新类的文档(在PHP7中引入)解释了:

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

不幸的是,异常似乎只在
$x%0
intdiv($x,0)
上引发。使用常规除法运算符
$x/0
进行的零除法不会引发异常,它的工作方式与在PHP5上的工作方式相同(即触发警告)

PHP支持网站上有关于这种情况的报告,但它被正式归类为“非bug”,因为除法运算符
/
生成一个浮点数,并且浮点数表示为
±INF
NaN
提供支持


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

我终于找到了问题的解决方案。

编写此代码后,您可以控制异常,例如Java和其他语言中的异常

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');

“他在使用PHP5.3”-也许你有一个将警告“转换”为异常的设置。你读过吗?PHP网站上@Egg链接的评论有误导性。示例代码不起作用。它定义了一个错误处理程序,但没有安装。“他在使用PHP5.3”-也许你有一个将警告“转换”为异常的设置。你读过吗?PHP网站上由@Egg链接的评论有误导性。示例代码不起作用。它定义了一个错误处理程序,但没有安装。你链接到的答案是5年前写的。它肯定不包括PHP7。对不起,你是对的。关于被零除。不幸的是,它不是那么简单。该文件具有误导性:-(阅读了解详细信息。这是无用的。让我们承认。PHP异常中的一次失败。甚至是一次完全的PHP失败。我不知道为什么我仍在尝试学习PHP。您链接到的答案是5年前写的。它绝对不包括PHP 7。抱歉,您是对的。关于除以零。不幸的是,它没有那么简单。文档误导:-(阅读了解详细信息。这是无用的。让我们承认。PHP异常中的一次失败。甚至是一次完全的PHP失败。我不知道为什么我仍在尝试学习PHP。事实上,这就是学习PHP的方法。这也是由PHP建议的。PHP 7将以前版本中触发的一些警告和错误更改为异常。希望它们能继续学习PHP改变这一趋势,在将来的某个时候,我们将不需要编写代码来将错误转换为异常。事实上,这就是实现这一点的方法。这也是由PHP建议的。PHP 7将以前版本中触发的一些警告和错误更改为异常。让我们希望他们将继续这一趋势,在将来的某个时候,我们将在上,不需要编写代码将错误转换为异常。
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'; 
}