【发布时间】:2015-10-31 02:37:13
【问题描述】:
我有一个自定义错误处理程序:
set_error_handler('API_Error_Handler');
register_shutdown_function('Fatal_Error_Handler'); // This one calls API_Error_Handler eventually
在以下示例中,catch{} 部分和 API_Error_Handler 都被执行。
try{
// Exception raised here
} catch(Exception $e){
// No error reporting needed, do something else
}
我只想执行catch{}。我怎么做?也许在API_Error_Handler 中确定异常是否已经被try-catch 捕获?还是有其他方法可用?
示例代码:
set_error_handler(function() {
echo "Error is handled by custom error handler. <br>";
});
try{
new SoapClient('http://bad.address/wsdl');
} catch(Exception $e){
echo "Error is caught. <br>";
}
【问题讨论】:
-
你读过official PHP documentation关于
set_error_handler函数的内容吗? -
请记住,您同时注册了错误处理程序和关闭函数。后者总是会被调用。
-
什么意思?如果捕获到异常,则错误处理程序should not execute。如果没有错误,则无需在关闭函数中调用错误处理程序。您可以使用
error_get_last()来检查是否存在错误。 -
@Anonymous 它确实执行了。我在描述中添加了示例代码。尝试在 phptester.net 上运行它(它启用了 Soap 扩展,所以你得到的类型和我一样)
标签: php error-handling try-catch