繁体   English   中英

异常处理程序在闭包中不起作用?

[英]Exception handler does not work in closures?

我试图使用这个:

$error_handler = function($severity, $message, $filename, $lineno) {
    throw new ErrorException($message, 0, $severity, $filename, $lineno);
};

$exception_handler = function($exception) {
    self::invokeHttpError(500);
};

set_error_handler($error_handler, E_ALL | E_STRICT);
set_exception_handler($exception_handler);

但是,当我调用它时它失败了:

$fn = function() {
    $application->test(); // $application is undefined
};
$fn();

调用错误处理程序,但不调用异常处理程序。 怎么了?

取消引用未定义的对象会导致致命且无法捕获的错误。 这就是为什么在发生这种情况时不会调用您的异常处理程序和错误处理程序的原因。

这种行为确实让我作为开发人员很恼火,我希望它会变成一个可捕获的异常。

更新

你可以做的一件事是在你的常规错误处理程序中抛出一个 ErrorException 来解决这个问题。 这将防止在取消引用未定义符号时出现无法捕获的致命错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM