Cómo capturar y leer errores con la clase Handler
Clase 18 de 33 • Curso Avanzado de Laravel
Contenido del curso
Entorno de trabajo y repaso de Laravel
Manejo de tu base de datos con Laravel
La terminal de Laravel
Eventos y tareas de Laravel
Manejo de errores
El corazón de Laravel
Creación de paquetes
- 26

Cómo crear paquetes Laravel con Composer
08:51 min - 27
Propiedades para manejo de dependencias
02:02 min - 28
Comprende el archivo composer.json
02:23 min - 29

Cómo Composer carga clases automáticamente
04:18 min - 30

Crear mis propios Services Providers
08:58 min - 31

Cómo publicar archivos con Service Provider
04:12 min - 32

Instalando paquetes desde GitHub con Composer
10:35 min - 33

Publicar tu paquete PHP en Packages
03:12 min
Domina el manejo de errores en Laravel con un enfoque claro y directo. Aquí verás cómo capturar, registrar y responder excepciones usando la clase handler, además de un ejemplo práctico para probar el flujo completo con una ruta GET y una respuesta JSON.
¿Qué es una excepción en Laravel y cómo se maneja?
Una excepción es un evento inesperado que ocurre durante la ejecución y interrumpe el flujo normal del programa. En Laravel, el manejo centralizado se realiza con la clase Handler ubicada en la carpeta app/exceptions dentro del archivo handler.php.
- Handler: captura todas las excepciones y define cómo reportarlas y mostrarlas.
- Configuración inicial: viene lista al crear un proyecto nuevo.
- Flujo: las excepciones se registran con report y se convierten en respuesta con render.
- Privacidad: existe un arreglo para no reportar ciertas excepciones y otro para ocultar inputs sensibles como la contraseña.
La respuesta final que ve el usuario puede ser una pantalla de error o un JSON personalizado. Todo depende de lo que definas en handler.php.
¿Cómo usar la clase handler: report y render?
La clase handler ofrece dos puntos clave para intervenir en el ciclo de vida de un error.
- report: se usa para registrar excepciones o enviarlas a un servicio externo como Sentry. También puedes inspeccionar temporalmente el error con DD.
- render: convierte la excepción en una respuesta HTTP para el navegador o el cliente.
¿Cómo registrar o inspeccionar con report?
- Para revisar qué llega a report, puedes hacer un dump rápido.
// app/Exceptions/Handler.php
public function report($exception)
{
// Inspección temporal del error
dd($exception);
// O delegar al comportamiento por defecto
// parent::report($exception);
}
- Si usas un servicio externo, report es el lugar para enviarlo.
¿Cómo personalizar la respuesta con render?
- Si prefieres responder en JSON en lugar del HTML por defecto, ajusta render.
// app/Exceptions/Handler.php
public function render($request, $exception)
{
return response()->json([
'message' => $exception->getMessage(),
]);
}
- Así, el cliente recibirá un objeto JSON con el mensaje de la excepción.
- Puedes mantener el HTML por defecto si no necesitas API.
¿Cómo probar una excepción con una ruta GET?
Para validar el flujo completo, crea una ruta en web.php que lance una excepción usando la palabra reservada throw.
// routes/web.php
use Illuminate\Support\Facades\Route;
use Exception;
Route::get('/exception', function () {
throw new Exception('Yo soy una excepción');
});
- Visita la ruta y verás la salida del manejador: primero el HTML por defecto.
- Si cambiaste render a JSON: obtendrás
{"message":"Soy una excepción"}.
Puntos clave al probar: - throw: crea y lanza una nueva instancia de la excepción. - GET: la ruta se ejecuta al visitar el navegador. - Privacidad: los inputs sensibles como password no deben enviarse al reporte. - Servicios externos: Sentry es un ejemplo para el envío desde report.
¿Te gustaría que profundicemos en excepciones personalizadas y mejores prácticas de respuesta JSON? Deja tus dudas o casos reales en los comentarios.