8

根据PHP 手册内部 PHP 函数主要使用错误报告,只有现代面向对象的扩展使用异常。但是,错误可以通过 ErrorException 简单地转换为异常

ErrorException 中提供的示例:

<?php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
    throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");

它似乎允许使用异常而不是默认的错误报告。我的问题是,这对我们来说是一种鼓励还是一种选择?

此外,哪种更好的做法是像上面的示例一样单独使用异常,或者同时使用异常 (set_exception_handler) 和错误报告 (set_error_handler)?

4

2 回答 2

12

简短的回答:不。这是两个不同的功能。

长答案:它不是要替换,而是要利用。set_exception_handlerDocs用于异常,set_error_handlerDocs用于错误。那是两双不同的鞋子。

另见:

于 2012-05-28T12:42:29.647 回答
0

不,任何未捕获的异常都会导致致命错误。如果要优雅地响应 catch 块中未捕获的异常,则需要将函数设置为默认异常处理程序。为此,您使用set_exception_handler()函数,该函数接受一个可调用对象作为其参数。您的脚本将在可调用对象执行后终止。函数restore_exception_handler()会将异常处理程序恢复为之前的值。

于 2018-11-04T19:03:20.057 回答