Contenido del curso
Cookies y sesiones
Manejo de excepciones
Trabajando con fechas
Modularización
- 16

Modularización de código en PHP con archivos
18:41 min - 17

Namespaces en PHP para evitar clases repetidas
16:15 min - 18

Autocarga de archivos con Composer y PSR-4
15:05 min - 19

Qué es un front controller en PHP
08:56 min - 20

URLs limpias con htaccess en PHP
17:28 min - 21

Traits en PHP: reutiliza métodos sin herencia
17:13 min
Cierre
Cómo implementar try catch en PHP
Resumen
Manejar errores en PHP sin que el usuario vea mensajes técnicos feos es justo lo que el bloque try catch te permite hacer. Aquí aprenderás a implementarlo paso a paso, atrapar excepciones y lanzarlas tú mismo con throw, ideal si estás aprendiendo PHP y quieres escribir código más robusto.
¿Qué hace el bloque try catch en PHP?
El bloque try catch te da control sobre errores que ocurren en tiempo de ejecución. Dentro del try colocas el código propenso a fallar, y dentro del catch defines qué hacer cuando ese error aparece.
Un ejemplo clásico es la división entre cero. Si escribes algo así sin protección, PHP lanza un fatal error visible para el usuario:
php $resultado = 20 / 0; echo $resultado;
Ese mensaje crudo (Uncaught DivisionByZeroError) jamás debería llegar a quien usa tu aplicación. Aquí entra el try catch a salvarte [01:30].
¿Qué es un bloque try catch? Es una estructura que envuelve código riesgoso en
tryy captura cualquier error que surja encatch, evitando que tu programa se rompa por completo.
¿Cómo se escribe un try catch básico?
La sintaxis es directa: abres try { } con el código riesgoso y, justo después, catch ( ) { } con la lógica de respuesta. El catch siempre recibe un parámetro con información del error.
php try { $resultado = 20 / 0; echo $resultado; } catch (Throwable $e) { echo "Ups, algo salió mal con tu división"; }
Fíjate en Throwable: es la interfaz padre de la que hablamos antes y te permite atrapar prácticamente cualquier error o excepción de PHP [03:10].
¿Qué puedo hacer dentro del catch?
Tienes varias opciones, y cada una sirve para escenarios distintos. Aquí van las más comunes:
- Bypassear el error: ignorarlo por completo y continuar. Útil cuando el error no afecta el flujo principal.
- Mostrar el mensaje técnico con
$e->getMessage()para depurar. - Mostrar un mensaje amigable al usuario, ocultando los detalles técnicos.
Bypassear se ve así: el catch queda vacío o solo imprime que el programa sigue. Por ejemplo, un echo "esto pasa sí o sí" te demuestra que el error se lanzó pero tu código continuó sin frenarse [04:20].
Si quieres algo más útil, el método getMessage() de la clase Throwable te devuelve la razón exacta del error:
php catch (Throwable $e) { echo $e->getMessage(); }
Eso te dirá, por ejemplo, Division by zero, sin la traza fea que vería el usuario.
¿Por qué usar getMessage en lugar del error completo? Porque te da solo la razón del error en texto limpio, ideal para registrarla o mostrar algo controlado, sin exponer rutas de archivos ni detalles internos.
¿Cómo muestro un mensaje amigable al usuario?
Muy fácil: dentro del catch, en vez de imprimir el mensaje técnico, escribes uno pensado para humanos.
php catch (Throwable $e) { echo "Ups, algo salió mal con tu división"; }
Eso es lo que separa un programa amateur de uno profesional: el usuario nunca ve tripas del sistema, solo recibe una explicación clara.
¿Cómo lanzar mis propias excepciones con throw?
A veces el error no lo genera PHP, sino tu lógica de negocio. Para esos casos usas la palabra clave throw, que lanza una excepción manualmente cuando se cumple alguna condición que tú defines.
Imagina un centro de adopción que solo tiene gatos y conejos. Si alguien pide otro animal, lanzas una excepción [07:15]:
php try { $mascota = readline("¿Qué quieres adoptar? "); if ($mascota !== "michi" && $mascota !== "conejo") { throw new Exception("Lo sentimos, no tenemos $mascota en este centro de adopción"); } echo "Felicidades por tu nuevo $mascota"; } catch (Throwable $e) { echo $e->getMessage(); }
Cuando ejecutas esto y respondes michi o conejo, recibes la felicitación. Pero si escribes perro, salta la excepción y el catch la atrapa con el mensaje personalizado [09:30].
¿Qué pasa con el código después de un throw?
Un detalle clave: cuando se lanza una excepción, el resto del código dentro del try deja de ejecutarse al instante. El control salta directo al catch.
Por eso, en el ejemplo del centro de adopción, el echo de felicitación nunca corre si la mascota no es válida. La excepción interrumpe el flujo y te lleva al manejador.
- throw lanza la excepción.
- El
tryse detiene en ese punto. - El
catchrecibe la excepción y ejecuta su lógica.
¿Cuándo conviene usar try catch en mi código?
La regla práctica: úsalo siempre que sospeches que algo puede fallar. Operaciones con archivos, conexiones a bases de datos, divisiones, peticiones a APIs, validaciones de entrada del usuario… todos son candidatos perfectos.
Es muy buena práctica envolver en try catch cualquier bloque donde un fallo pueda romper la experiencia del usuario o dejar tu sistema en un estado raro. Mejor prevenir que rastrear bugs en producción.
¿Ya tienes en mente algún punto de tu código donde un try catch te salvaría? Cuéntame en los comentarios qué error feo te tocó manejar y cómo lo resolviste.