Mostrando entradas con la etiqueta manejo de errores. Mostrar todas las entradas
Mostrando entradas con la etiqueta manejo de errores. Mostrar todas las entradas

martes, 10 de marzo de 2009

Transformar errores y warnings de PHP en excepciones

Hoy estuve probando la funcionalidad de envío de email de PHP y como tenía el servidor de mail mal configurado en el PHP.INI, mi aplicación me mostraba un WARNING. El problema es que el WARNING no se tira como una excepción, o sea que no se le puede hacer TRY/CATCH, por lo tanto tuve que buscar como hacer para que estas WARNINGS se pudieran atrapar como cualquier excepción, el resultado es el siguiente:

En PHP existe una función llamada set_error_handler, la cual me permite establecer una función mía para manejar los errores de PHP (PHP tiene distintos tipos de errores y puedo definir distintos manejadores para cada tipo de error).

Entonces, para que todos los errores de PHP (incluyendo WARNINGS) sean enviados a mi manejador (para arrojar una excepción en su lugar) es implementado con el siguiente código:

set_error_handler("my_warning_handler", E_ALL);

function my_warning_handler($errno, $errstr, $errfile, $errline, $errcontext) {
throw new Exception( $errstr );
}

Seleccionando E_ALL, cualquier tipo de error es enviado a mi función para arrojar una excepción.

Los distintos tipos de errores que tiene PHP son:
  • E_ALL
  • E_WARNING
  • E_ERROR
  • E_PARSE
  • E_CORE_ERROR
  • E_CORE_WARNING
  • E_COMPILE_ERROR
  • E_COMPILE_WARNING
  • E_STRICT
Por más información sobre set_error_handler y manejo de errores en PHP:

Espero que les sirva.