我们如何将errcontext传递给ErrorException?

时间:2013-07-19 06:08:42

标签: php exception error-handling

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

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

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

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

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

  5. errcontext ,第五个参数(可选)是一个数组,指向发生错误时的活动符号表。换句话说, errcontext 将包含触发错误的作用域中存在的每个变量的数组。用户错误处理程序不得修改错误上下文。

  6. 但是,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参数,我们是否需要创建自己的异常子类呢?

0 个答案:

没有答案