每当错误由error_exception(set_error_handler
)处理时,传入的参数包括:
errno ,第一个参数,包含引发的错误级别,为整数。
errstr ,第二个参数,包含错误消息,为字符串。
errfile ,第三个参数(可选)包含以字符串形式引发错误的文件名。
errline ,第四个参数(可选),包含引发错误的行号,为整数。
errcontext ,第五个参数(可选)是一个数组,指向发生错误时的活动符号表。换句话说, errcontext 将包含触发错误的作用域中存在的每个变量的数组。用户错误处理程序不得修改错误上下文。
但是,ErrorException
的构造函数不包含传递 errcontext 的方法。
为什么ErrorException不包含errcontext参数?这样做本质上是危险的吗?
set_error_handler(function($errno, $errstring, $errfile, $errline, $errcontext){
if(error_reporting() === 0){ // means expression uses @ sign
return true; // prevent default
}
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
// how do we pass in errcontext ?
});
如果我们需要传入errcontext参数,我们是否需要创建自己的异常子类呢?