/**
  * 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);
 }