/** * Displays a human readable, partly beautified version of the given exception * and stops the application, return a non-zero exit code. * * @param \Exception $exception * @return void */ protected function handleException(\Exception $exception) { $response = new \TYPO3\Flow\Cli\Response(); $exceptionMessage = ''; $exceptionReference = "\n<b>More Information</b>\n"; $exceptionReference .= " Exception code #" . $exception->getCode() . "\n"; $exceptionReference .= " File " . $exception->getFile() . ($exception->getLine() ? ' line ' . $exception->getLine() : '') . "\n"; $exceptionReference .= $exception instanceof \TYPO3\Flow\Exception ? " Exception reference #" . $exception->getReferenceCode() . "\n" : ''; foreach (explode(chr(10), wordwrap($exception->getMessage(), 73)) as $messageLine) { $exceptionMessage .= " {$messageLine}\n"; } $response->setContent(sprintf("<b>Uncaught Exception</b>\n%s%s\n", $exceptionMessage, $exceptionReference)); $response->send(); exit(1); }
/** * Formats and echoes the exception for the command line * * @param \Exception $exception The exception object * @return void */ protected function echoExceptionCli(\Exception $exception) { $response = new \TYPO3\Flow\Cli\Response(); $backtraceSteps = $exception->getTrace(); $pathPosition = strpos($exception->getFile(), 'Packages/'); $filePathAndName = $pathPosition !== FALSE ? substr($exception->getFile(), $pathPosition) : $exception->getFile(); $exceptionMessage = PHP_EOL . '<b>Uncaught Exception: ' . get_class($exception) . '</b>' . PHP_EOL . PHP_EOL; $exceptionMessage .= '<b>Message</b>' . PHP_EOL; foreach (explode(chr(10), wordwrap($exception->getMessage(), 73)) as $messageLine) { $exceptionMessage .= ' ' . $messageLine . PHP_EOL; } $exceptionMessage .= PHP_EOL . '<b>More Information</b>' . PHP_EOL; if ($exception->getCode()) { $exceptionMessage .= ' Exception code ' . $exception->getCode() . PHP_EOL; } $exceptionMessage .= ' File ' . $filePathAndName . ' line ' . $exception->getLine() . PHP_EOL; if ($exception instanceof \TYPO3\Flow\Exception) { $exceptionMessage .= ' Reference code ' . $exception->getReferenceCode() . PHP_EOL; } $indent = ' '; while (($exception = $exception->getPrevious()) !== NULL) { $exceptionMessage .= PHP_EOL . $indent . '<b>Nested exception: ' . get_class($exception) . '</b>' . PHP_EOL . PHP_EOL; $exceptionMessage .= $indent . '<b>Message</b>' . PHP_EOL; foreach (explode(chr(10), wordwrap($exception->getMessage(), 73)) as $messageLine) { $exceptionMessage .= $indent . ' ' . $messageLine . PHP_EOL; } $exceptionMessage .= PHP_EOL . $indent . '<b>More Information</b>' . PHP_EOL; if ($exception->getCode()) { $exceptionMessage .= $indent . ' Exception code ' . $exception->getCode() . PHP_EOL; } $exceptionMessage .= $indent . ' File ' . $filePathAndName . ' line ' . $exception->getLine() . PHP_EOL; if ($exception instanceof \TYPO3\Flow\Exception) { $exceptionMessage .= $indent . ' Reference code ' . $exception->getReferenceCode() . PHP_EOL; } $indent .= ' '; } $exceptionMessage .= PHP_EOL . '<b>Stack trace</b>' . PHP_EOL; for ($index = 0; $index < count($backtraceSteps); $index++) { $exceptionMessage .= PHP_EOL . '#' . $index . ' '; if (isset($backtraceSteps[$index]['class'])) { $exceptionMessage .= $backtraceSteps[$index]['class']; } if (isset($backtraceSteps[$index]['function'])) { $exceptionMessage .= '::' . $backtraceSteps[$index]['function'] . '()'; } $exceptionMessage .= PHP_EOL; if (isset($backtraceSteps[$index]['file'])) { $exceptionMessage .= ' ' . $backtraceSteps[$index]['file'] . (isset($backtraceSteps[$index]['line']) ? ':' . $backtraceSteps[$index]['line'] : '') . PHP_EOL; } } $exceptionMessage .= PHP_EOL; $response->setContent($exceptionMessage); $response->send(); exit(1); }
/** * Echoes an exception for the command line. * * @param \Exception $exception The exception * @return void */ protected function echoExceptionCli(\Exception $exception) { $response = new \TYPO3\Flow\Cli\Response(); $backtraceSteps = $exception->getTrace(); $pathPosition = strpos($exception->getFile(), 'Packages/'); $filePathAndName = $pathPosition !== FALSE ? substr($exception->getFile(), $pathPosition) : $exception->getFile(); $exceptionMessage = PHP_EOL . '<b>Uncaught Exception: ' . get_class($exception) . '</b>' . PHP_EOL . PHP_EOL; $exceptionMessage .= '<b>Message</b>' . PHP_EOL; foreach (explode(chr(10), wordwrap($exception->getMessage(), 73)) as $messageLine) { $exceptionMessage .= ' ' . $messageLine . PHP_EOL; } $exceptionMessage .= PHP_EOL . '<b>More Information</b>' . PHP_EOL; if ($exception->getCode()) { $exceptionMessage .= ' Exception code ' . $exception->getCode() . PHP_EOL; } $exceptionMessage .= ' File ' . $filePathAndName . ' line ' . $exception->getLine() . PHP_EOL; if ($exception instanceof \TYPO3\Flow\Exception) { $exceptionMessage .= ' Reference code ' . $exception->getReferenceCode() . PHP_EOL; } $exceptionMessage .= PHP_EOL; $response->setContent($exceptionMessage); $response->send(); exit(1); }