每当 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 参数,是否需要创建自己的异常子类来执行此操作?