Skip to content

Commit

Permalink
Debugger::errorHandler() refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed Nov 28, 2019
1 parent bc643c7 commit 9e39e70
Showing 1 changed file with 20 additions and 22 deletions.
42 changes: 20 additions & 22 deletions src/Tracy/Debugger/Debugger.php
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -358,7 +358,7 @@ public static function errorHandler(int $severity, string $message, string $file
} }


if ($severity === E_RECOVERABLE_ERROR || $severity === E_USER_ERROR) { if ($severity === E_RECOVERABLE_ERROR || $severity === E_USER_ERROR) {
if (Helpers::findTrace(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), '*::__toString')) { if (Helpers::findTrace(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), '*::__toString')) { // workaround for PHP < 7.4
$previous = isset($context['e']) && $context['e'] instanceof \Throwable ? $context['e'] : null; $previous = isset($context['e']) && $context['e'] instanceof \Throwable ? $context['e'] : null;
$e = new ErrorException($message, 0, $severity, $file, $line, $previous); $e = new ErrorException($message, 0, $severity, $file, $line, $previous);
$e->context = $context; $e->context = $context;
Expand All @@ -370,47 +370,45 @@ public static function errorHandler(int $severity, string $message, string $file
$e->context = $context; $e->context = $context;
throw $e; throw $e;


} elseif (($severity & error_reporting()) !== $severity) { } elseif (($severity & error_reporting()) !== $severity) { // muted errors
return false; // calls normal error handler to fill-in error_get_last() return false; // calls normal error handler to fill-in error_get_last()


} elseif (self::$productionMode && ($severity & self::$logSeverity) === $severity) { } elseif (self::$productionMode) {
$e = new ErrorException($message, 0, $severity, $file, $line); if (($severity & self::$logSeverity) === $severity) {
$e->context = $context; $e = new ErrorException($message, 0, $severity, $file, $line);
Helpers::improveException($e); $e->context = $context;
Helpers::improveException($e);
} else {
$e = 'PHP ' . Helpers::errorTypeToString($severity) . ': ' . Helpers::improveError($message, (array) $context) . " in $file:$line";
}

try { try {
self::log($e, self::ERROR); self::log($e, self::ERROR);
} catch (\Throwable $foo) { } catch (\Throwable $foo) {
} }
return null; return null;


} elseif ( } elseif (
!self::$productionMode (is_bool(self::$strictMode) ? self::$strictMode : ((self::$strictMode & $severity) === $severity)) // $strictMode
&& !isset($_GET['_tracy_skip_error']) && !isset($_GET['_tracy_skip_error'])
&& (is_bool(self::$strictMode) ? self::$strictMode : ((self::$strictMode & $severity) === $severity))
) { ) {
$e = new ErrorException($message, 0, $severity, $file, $line); $e = new ErrorException($message, 0, $severity, $file, $line);
$e->context = $context; $e->context = $context;
$e->skippable = true; $e->skippable = true;
self::exceptionHandler($e); self::exceptionHandler($e);
exit(255); exit(255);
}


$message = 'PHP ' . Helpers::errorTypeToString($severity) . ': ' . Helpers::improveError($message, (array) $context); } else {
$count = &self::getBar()->getPanel('Tracy:errors')->data["$file|$line|$message"]; $message = 'PHP ' . Helpers::errorTypeToString($severity) . ': ' . Helpers::improveError($message, (array) $context);
$count = &self::getBar()->getPanel('Tracy:errors')->data["$file|$line|$message"];


if ($count++) { // repeated error if ($count++) { // repeated error
return null; return null;


} elseif (self::$productionMode) { } else {
try { self::fireLog(new ErrorException($message, 0, $severity, $file, $line));
self::log("$message in $file:$line", self::ERROR); return Helpers::isHtmlMode() || Helpers::isAjax() ? null : false; // false calls normal error handler
} catch (\Throwable $foo) {
} }
return null;

} else {
self::fireLog(new ErrorException($message, 0, $severity, $file, $line));
return Helpers::isHtmlMode() || Helpers::isAjax() ? null : false; // false calls normal error handler
} }
} }


Expand Down

0 comments on commit 9e39e70

Please sign in to comment.