Antes de entrar en la pregunta, les daré una breve introducción de lo que quiero hacer. Quiero poder mostrar una vista de amigo a los usuarios cuando ocurre un error en mi proyecto de Laravel, pero desafortunadamente no sé cómo hacerlo y esperaba que algunos de ustedes pudieran ayudarme.
Hola. Hoy estoy haciendo una pregunta sobre Laravel. Durante mucho tiempo he querido registrar CADA error en mi proyecto laravel. Ahora, algunos de ustedes pueden decir que es fácil, simplemente sobrescriba el método handle() en la clase App\Exceptions\Handler .
Si bien eso es relativamente fácil de hacer, no maneja TODOS los errores. He notado que no maneja excepciones de consulta.
Lo que pregunto es cómo puedo manejar CADA excepción. Lo que principalmente quiero hacer es registrar el error en una tabla de base de datos y deshabilitar una vista agradable para el usuario final. Luego, si yo soy el único miembro de mi equipo que recibe el error, pueden verificar fácilmente en la base de datos sin tener que mostrar ningún detalle crítico al usuario final.
Seguí este tutorial pero es lo mismo, no registra todas las excepciones. http://blog.sarav.co/registering-custom-exception-handler-laravel-5/
Use set_error_handler para establecer una excepción personalizada. O podría usar log4php , creo que tienen un paquete para laravel.
Simplemente puede agregar algo de código en el método App\Exceptions\Handler::render , por ejemplo:
public function render($request, Exception $exception) { if($exception instanceof \Illuminate\Database\QueryException) { // Do something with the $exception // dd($exception); // analyze it // return a response/redirect } return parent::render($request, $exception); } En esta instancia de $exception , puede encontrar mucha información útil usando los siguientes métodos (Omita los métodos mágicos, es un volcado de get_class_methods ):
array:12 [▼ 0 => "__construct" 1 => "getSql" 2 => "getBindings" 3 => "__wakeup" 4 => "getMessage" 5 => "getCode" 6 => "getFile" 7 => "getLine" 8 => "getTrace" 9 => "getPrevious" 10 => "getTraceAsString" 11 => "__toString" ] Además, la propiedad $exception->errorInfo también le dará información, por ejemplo (Un errorInfo en particular):
errorInfo: array:3 [▼ 0 => "42S22" 1 => 1054 2 => "Unknown column 'ids' in 'field list'" ] Nota : FYI, error y la exception son dos cosas diferentes, por lo que set_error_handler y set_exception_handler son por razones diferentes, un controlador de errores no detectará una excepción.