1

每当 error_exception ( set_error_handler) 处理错误时,传入的参数包括:

  1. errno,第一个参数,包含引发的错误级别,作为一个整数。

  2. errstr,第二个参数,包含错误消息,作为一个字符串。

  3. errfile,第三个参数(可选),包含引发错误的文件名,作为字符串。

  4. errline,第四个参数(可选),包含引发错误的行号,作为整数。

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

4

0 回答 0