Working on exception handling. WIP.
This commit is contained in:
@@ -29,7 +29,9 @@ class Kernel extends ConsoleKernel {
|
|||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
$output->writeln((string) $e);
|
$this->reportException($e);
|
||||||
|
|
||||||
|
$this->renderException($output, $e);
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ class Kernel extends HttpKernel {
|
|||||||
}
|
}
|
||||||
catch (Exception $e)
|
catch (Exception $e)
|
||||||
{
|
{
|
||||||
throw $e;
|
$this->reportException($e);
|
||||||
|
|
||||||
|
return $this->renderException($request, $e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
63
app/Infrastructure/ExceptionHandler.php
Normal file
63
app/Infrastructure/ExceptionHandler.php
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<?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\Console\Kernel'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$app->singleton(
|
||||||
|
'Illuminate\Contracts\Debug\ExceptionHandler',
|
||||||
|
'App\Infrastructure\ExceptionHandler'
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|--------------------------------------------------------------------------
|
|--------------------------------------------------------------------------
|
||||||
| Return The Application
|
| Return The Application
|
||||||
|
|||||||
Reference in New Issue
Block a user