/**
  * @author David Grudl
  * @see    https://github.com/nette/tracy
  */
 protected static function formatMessage(Throwable $message) : string
 {
     $tmp = [];
     while ($message) {
         $tmp[] = ($message instanceof \ErrorException ? Helpers::errorTypeToString($message->getSeverity()) . ': ' . $message->getMessage() : Helpers::getClass($message) . ': ' . $message->getMessage()) . ' in ' . $message->getFile() . ':' . $message->getLine();
         $message = $message->getPrevious();
     }
     $message = implode($tmp, "\ncaused by ");
     return trim($message);
 }
Exemplo n.º 2
0
 /**
  * Renders blue screen.
  * @param  \Exception
  * @return void
  */
 public function render(\Exception $exception)
 {
     $panels = $this->panels;
     $info = array_filter($this->info);
     $source = Helpers::getSource();
     $sourceIsUrl = preg_match('#^https?://#', $source);
     $title = $exception instanceof \ErrorException ? Helpers::errorTypeToString($exception->getSeverity()) : get_class($exception);
     $skipError = $sourceIsUrl && $exception instanceof \ErrorException && !empty($exception->skippable) ? $source . (strpos($source, '?') ? '&' : '?') . '_tracy_skip_error' : NULL;
     require __DIR__ . '/templates/bluescreen.phtml';
 }
Exemplo n.º 3
0
 /**
  * Handler to catch warnings and notices.
  * @return bool   FALSE to call normal error handler, NULL otherwise
  * @throws ErrorException
  * @internal
  */
 public static function errorHandler($severity, $message, $file, $line, $context)
 {
     if (self::$scream) {
         error_reporting(E_ALL);
     }
     if ($severity === E_RECOVERABLE_ERROR || $severity === E_USER_ERROR) {
         if (Helpers::findTrace(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), '*::__toString')) {
             $previous = isset($context['e']) && $context['e'] instanceof \Exception ? $context['e'] : NULL;
             $e = new ErrorException($message, 0, $severity, $file, $line, $previous);
             $e->context = $context;
             self::exceptionHandler($e);
         }
         $e = new ErrorException($message, 0, $severity, $file, $line);
         $e->context = $context;
         throw $e;
     } elseif (($severity & error_reporting()) !== $severity) {
         return FALSE;
         // calls normal error handler to fill-in error_get_last()
     } elseif (self::$productionMode && ($severity & self::$logSeverity) === $severity) {
         $e = new ErrorException($message, 0, $severity, $file, $line);
         $e->context = $context;
         try {
             self::log($e, self::ERROR);
         } catch (\Exception $foo) {
         }
         return NULL;
     } elseif (!self::$productionMode && !isset($_GET['_tracy_skip_error']) && (is_bool(self::$strictMode) ? self::$strictMode : (self::$strictMode & $severity) === $severity)) {
         $e = new ErrorException($message, 0, $severity, $file, $line);
         $e->context = $context;
         $e->skippable = TRUE;
         self::exceptionHandler($e);
     }
     $message = 'PHP ' . Helpers::errorTypeToString($severity) . ": {$message}";
     $count =& self::getBar()->getPanel('Tracy:errors')->data["{$file}|{$line}|{$message}"];
     if ($count++) {
         // repeated error
         return NULL;
     } elseif (self::$productionMode) {
         try {
             self::log("{$message} in {$file}:{$line}", self::ERROR);
         } catch (\Exception $foo) {
         }
         return NULL;
     } else {
         self::fireLog(new ErrorException($message, 0, $severity, $file, $line));
         return self::isHtmlMode() ? NULL : FALSE;
         // FALSE calls normal error handler
     }
 }