En Laravel 5.5 será posible definir un método report
en cualquier excepción. Laravel buscará si existe este método en cualquier excepción y lo capturará en la clase Illuminate\Foundation\Exception\Handler
.
1 2 3 | if (method_exists($e, 'report')) { return $e->report(); } |
Este podría ser un lugar perfecto para enviar un e-mail al desarrollador, reportar a nuestro sistema de monitorización, o llevar a cabo cualquier otra acción de acuerdo con la excepción que se ha lanzado.
En versiones anteriores de Laravel, esto se podía llevar a cabo editando el método report
de la clase App\Exceptions\Handler
. Aquí se pueden capturar instancias de cualquier excepción lanzada por la aplicación y llevar acciones en consecuencia.
1 2 3 4 5 6 7 8 | public function report(Exception $exception) { if ($exception instanceof MyException) { // do something here such as send an email to developer or notify monitoring app } return parent::report($exception); } |
Como se puede imaginar, conforme nuestra aplicación crece, este método crece también y comienza a ser difícil de mantener.
Este pequeño cambio de Laravel 5.5 será una gran mejora y evitará este problema.