diff --git a/library/think/Error.php b/library/think/Error.php index 6b6218c8..02a92752 100644 --- a/library/think/Error.php +++ b/library/think/Error.php @@ -89,14 +89,14 @@ class Error * @param integer $errline 出错行号 * @return bool true-禁止往下传播已处理过的异常 */ - public static function appError($errno, $errstr, $errfile, $errline) + public static function appError($errno, $errstr, $errfile = null, $errline = 0, array $errcontext = []) { if ($errno & Config::get('exception_ignore_type')) { // 忽略的异常记录到日志 Log::record("[{$errno}]{$errstr}[{$errfile}:{$errline}]", 'notic'); } else { // 将错误信息托管至 think\exception\ErrorException - throw new ErrorException($errno, $errstr, $errfile, $errline); + throw new ErrorException($errno, $errstr, $errfile, $errline, $errcontext); // 禁止往下传播已处理过的异常 return true; } diff --git a/library/think/exception/ErrorException.php b/library/think/exception/ErrorException.php index 9e081dfb..caa85c93 100644 --- a/library/think/exception/ErrorException.php +++ b/library/think/exception/ErrorException.php @@ -33,14 +33,17 @@ class ErrorException extends Exception * @param string $message 错误详细信息 * @param string $file 出错文件路径 * @param integer $line 出错行号 + * @param array $context 错误上下文,会包含错误触发处作用域内所有变量的数组 */ - public function __construct($severity, $message, $file, $line) + public function __construct($severity, $message, $file, $line, $context) { $this->severity = $severity; $this->message = $message; $this->file = $file; $this->line = $line; $this->code = 0; + + empty($context) || $this->setData('Error Context', $context); } /**