PHP:
Manejo de errores

Cómo hacerlo:

En PHP, puedes gestionar errores utilizando bloques try-catch, y puedes personalizar el proceso con manejadores de errores personalizados y excepciones.

// Ejemplo básico de try-catch
try {
  // Hacer algo arriesgado
  $file = fopen("nonexistentfile.txt", "r");
} catch (Exception $e) {
  // Manejar el error
  echo "Error: " . $e->getMessage();
}

// Establecer un manejador de errores personalizado
set_error_handler(function($severity, $message, $file, $line) {
  throw new ErrorException($message, 0, $severity, $file, $line);
});

// Usar excepciones
class MyException extends Exception {}

try {
  // Hacer algo y lanzar una excepción personalizada
  throw new MyException("¡Error personalizado!");
} catch (MyException $e) {
  // Manejar la excepción personalizada
  echo $e->getMessage();
}

// Salida de muestra:
// Error: fopen(nonexistentfile.txt): failed to open stream: No such file or directory
// ¡Error personalizado!

Profundizando

En el pasado, los errores de PHP estaban más relacionados con advertencias y notificaciones que no detenían la ejecución del script. A medida que el lenguaje maduraba, adoptó un manejo de errores orientado a objetos más robusto mediante la clase Exception introducida en PHP 5. Más tarde, PHP 7 salió con clases de Error que finalmente diferenciaban entre errores y excepciones.

Antes de los bloques try-catch, PHP utilizaba set_error_handler() para tratar los errores. try-catch es más limpio y moderno. Pero los manejadores de errores personalizados todavía tienen su lugar, especialmente para código legado o cuando necesitas capturar lo que normalmente serían errores no excepcionales.

La interfaz Throwable en PHP 7+ significa que, ya sea un Error o una Excepción, puedes capturar ambos. Esto es práctico porque ahora no te pierdes errores críticos en tiempo de ejecución, que eran más difíciles de rastrear antes.

Las alternativas fuera de los mecanismos incorporados de PHP incluyen bibliotecas y frameworks que vienen con sus propios sistemas de manejo de errores, ofreciendo más características como registro de errores en archivos o mostrando páginas de errores amigables para el usuario.

Ver también