微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Catch不工作以及如何取消设置异常处理程序

catch无效,因为使用set_exception_handler()安装了异常处理程序

我需要“捕获”才能工作,所以我想我需要以某种方式取消设置异常处理程序.诸如set_exception_handler(NULL)之类的东西不起作用.

任何想法如何取消设置异常处理程序?

function my_exception_handler($exception) {
    error_log("caught exception: " . $exception->getMessage() );
}

set_exception_handler("my_exception_handler");

// QUESTION: how does on unset it ?
//set_exception_handler(NULL);

try {
    throw new Exception('hello world');
    error_log("should not happen");
} catch(Exception $e) {
    error_log("should happen: " . $e->getMessage());
}

实际产量:

抓住异常:你好世界

期望的输出

应该发生:你好世界

解决方法:

restore_exception_handler,链接set_exception_handler的手动输入.

顺便说一下,这些异常处理程序只有在未被捕获的情况下才会发挥作用. catch块应始终具有优先权.

Exceptions页面的注释中稍微阅读一下,可以看到this bugthis bug.它们准确描述了您的体验,定义了自定义错误处理程序时无法捕获异常.

解:

Fixed in 5.3 and HEAD, won’t be backported to 5.2.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐