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
Métodos de la clase Exception en PHP
Resumen
Cuando trabajas con bloques try catch en PHP, capturar el error es solo el primer paso. Lo realmente útil viene después: extraer información detallada con los métodos que te ofrece la interfaz Throwable. Estos métodos te permiten saber qué falló, dónde falló y qué camino siguió tu código hasta romperse, justo lo que necesitas para depurar como un desarrollador profesional.
¿Qué es la interfaz Throwable y por qué importa?
Todas las excepciones en PHP implementan la interfaz Throwable, y eso no es casualidad. Esta interfaz obliga a que cualquier excepción tenga un conjunto fijo de métodos disponibles, sin importar de qué clase venga.
La clase Exception que ya viene declarada en PHP implementa esta interfaz directamente. Gracias a eso tienes la certeza de que, cuando atrapas un error, vas a poder pedirle datos como el mensaje, el código, el archivo o la línea donde ocurrió. Es un contrato que PHP cumple por ti.
¿Qué es Throwable en PHP? Es la interfaz que toda excepción debe implementar. Garantiza que cada error capturado tenga métodos como getMessage, getCode, getFile, getLine y getTrace disponibles.
¿Cómo obtener el mensaje y el código de un error?
El método más común es getMessage, que devuelve el texto descriptivo del error [01:30]. Si haces una división entre cero dentro de un try catch y llamas a $e->getMessage(), vas a recibir literalmente division by zero.
El segundo es getCode, que devuelve un código numérico asociado al error. Aquí hay un detalle importante: no todas las excepciones traen código. Algunas devuelven cero por defecto y otras sí asignan valores específicos. Depende de la clase de excepción que estés manejando.
Un ejemplo básico se ve así:
php try { $resultado = 20 / 0; echo $resultado; } catch (DivisionByZeroError $e) { echo $e->getMessage(); echo $e->getCode(); }
¿Cómo saber en qué archivo y línea ocurrió el error?
Cuando tu proyecto crece, saber dónde explotó el código es vital. Para eso existen getFile y getLine.
- getFile devuelve la ruta completa del archivo donde se originó el error, por ejemplo
methods.phpcon su path absoluto [03:30]. - getLine devuelve el número exacto de línea, lo que te permite ir directo al pedazo de código problemático [04:10].
- Combinados, son tu primer recurso para localizar fallos sin adivinar.
Esta combinación es especialmente útil cuando tu aplicación tiene decenas de archivos y necesitas un punto de partida claro para depurar.
¿Qué es el trace y cómo se interpreta?
El método getTrace devuelve un array con la cadena de ejecución que llevó al error. En palabras simples: el caminito de llamadas a funciones que se siguió hasta que algo se rompió [05:10].
Si el error sucede directamente dentro del try catch, el trace viene vacío, porque no hubo intermediarios. Pero cuando el error ocurre dentro de funciones anidadas, el trace se vuelve oro puro.
¿Qué es el stack trace en PHP? Es la lista ordenada de funciones que se llamaron una tras otra hasta llegar al punto donde surgió el error. Te muestra el recorrido completo del fallo.
Ejemplo práctico de trace con funciones anidadas
Imagina este escenario:
php function caminitoDos() { return 20 / 0; }
function caminito() { return caminitoDos(); }
function division() { return caminito(); }
try { division(); } catch (DivisionByZeroError $e) { var_dump($e->getTrace()); }
Aquí el trace va a registrar tres pasos: primero la llamada a division, después a caminito y finalmente a caminitoDos, donde realmente explota la división entre cero [07:00]. Cuando el sistema encuentra el origen, el trace termina.
¿Para qué sirve getTrace en la práctica?
Este recorrido te ayuda a reconstruir la lógica que llevó al fallo. En aplicaciones grandes, donde una función llama a otra que llama a otra, el trace es la diferencia entre tardar cinco minutos en encontrar un bug o tardar dos horas.
También existe getTraceAsString, que devuelve la misma información pero como cadena de texto, más cómoda para imprimir en logs.
¿Cómo personalizar mensajes de error en PHP?
Una ventaja interesante de tener todos estos métodos disponibles es que puedes construir tus propios mensajes de error a la medida. En lugar de mostrar el texto genérico de PHP, puedes combinar getFile, getLine y getMessage para crear avisos más legibles para tu equipo o más útiles para tus logs.
Algunas ideas de uso:
- Generar mensajes formateados que incluyan archivo, línea y descripción en una sola cadena.
- Enviar el trace completo a un sistema de logging como Monolog.
- Mostrar mensajes amigables al usuario final mientras guardas el detalle técnico para el equipo de desarrollo.
Estos métodos son tus herramientas para debuggear con criterio: entender qué pasó, dónde pasó y por qué pasó. ¿Ya probaste imprimir un trace en alguno de tus proyectos? Cuéntame en los comentarios qué tan útil te resultó.