Commit 1209ce76 authored by Taylor Otwell's avatar Taylor Otwell

Working on exception handling. WIP.

parent 3c614ac5
......@@ -29,7 +29,9 @@ class Kernel extends ConsoleKernel {
}
catch (Exception $e)
{
$output->writeln((string) $e);
$this->reportException($e);
$this->renderException($output, $e);
return 1;
}
......
......@@ -34,7 +34,9 @@ class Kernel extends HttpKernel {
}
catch (Exception $e)
{
throw $e;
$this->reportException($e);
return $this->renderException($request, $e);
}
}
......
<?php namespace App\Infrastructure;
use Exception;
use Psr\Log\LoggerInterface;
use Symfony\Component\Debug\ExceptionHandler as SymfonyDisplayer;
use Illuminate\Contracts\Debug\ExceptionHandler as ExceptionHandlerContract;
class ExceptionHandler implements ExceptionHandlerContract {
/**
* The log implementation.
*
* @var \Psr\Log\LoggerInterface
*/
protected $log;
/**
* Create a new exception handler instance.
*
* @param \Psr\Log\LoggerInterface $log
* @return void
*/
public function __construct(LoggerInterface $log)
{
$this->log = $log;
}
/**
* Report or log an exception.
*
* @param \Exception $e
* @return void
*/
public function report(Exception $e)
{
$this->log->error((string) $e);
}
/**
* Render an exception into a response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $e
* @return \Symfony\Component\HttpFoundation\Response
*/
public function render($request, Exception $e)
{
return (new SymfonyDisplayer)->createResponse($e);
}
/**
* Render an exception to the console.
*
* @param \Symfony\Component\Console\Output\OutputInterface $output
* @param \Exception $e
* @return void
*/
public function renderForConsole($output, Exception $e)
{
$output->writeln((string) $e);
}
}
......@@ -36,6 +36,11 @@ $app->singleton(
'App\Console\Kernel'
);
$app->singleton(
'Illuminate\Contracts\Debug\ExceptionHandler',
'App\Infrastructure\ExceptionHandler'
);
/*
|--------------------------------------------------------------------------
| Return The Application
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment