set_exception_handler是否意味着要替换set_error_handler?

时间:2012-05-28 12:34:43

标签: php

根据PHP Manual内部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");

似乎允许使用Exceptions而不是默认的错误报告。我的问题是,这是鼓励还是我们的选择?

此外,这是一个更好的做法,像上面的例子一样单独使用Exception,或者同时使用Exception(set_exception_handler)和Error reporting(set_error_handler)?

2 个答案:

答案 0 :(得分:9)

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

答案很长:这并不是要取代而是要利用。 set_exception_handlerDocs用于例外,set_error_handlerDocs用于出错。那是两双不同的鞋子。

参见:

答案 1 :(得分:0)

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