mirror of
https://github.com/laravel/laravel.git
synced 2025-02-20 11:53:14 +08:00
Working on exception handling. WIP.
This commit is contained in:
parent
3c614ac5d6
commit
1209ce7657
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
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->singleton(
|
||||
'Illuminate\Contracts\Debug\ExceptionHandler',
|
||||
'App\Infrastructure\ExceptionHandler'
|
||||
);
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Return The Application
|
||||
|
Loading…
x
Reference in New Issue
Block a user