Una excepción es cualquier incidente que no permite la terminación correcta de un programa. Puede ser inducida o involuntaria.

En la mayoría de los casos se tratará de impedir la terminación de los programas manejando las excepciones o lanzándolas hacia algún punto del programa que pueda manejar dicha excepción.

Bloque try-catch

Existe una configuración específica para manejar una excepción.

https://gist.github.com/jeavila/b2c976c847fa678f04e121709f3bc842

Lanzamiento de Excepción

Cuando se ha establecido que una parte del código puede presentar una excepción ya sea por los limites del propio lenguaje o porque se ha decidido que bajo circunstancias establecidas se presente una interrupción, se habla de que se realiza un lanzamiento de una excepción. Esto se realiza cuando no es posible controlar la excepción y se desea enviar a un lugar en el cual pueda ser tratado correctamente.

Algo importante de mencionar es que si el codificar lanza una excepción, debe estar preparado para capturarla en algún lugar, ya que de no hacerlo causara una ruptura en el flujo del programa (lo cual es lo que se quiere evitar).

https://gist.github.com/jeavila/1de1334b226f8f9418725da3c9ec5777

Excepciones Personalizadas

La clase Exception permite la herencia y por consiguiente reutilizar y rescribir las operaciones necesarias.

https://gist.github.com/jeavila/bc6d445147682a072cbfc4a1c4a4dfc3

Errores en PHP

Existen ciertos errores que no son capturados por las excepciones en PHP, al menos no de forma directa. Existen 3 categorías de estos errores:

NOTICE: Indican que el programa encontró algo que podría indicar un error, y que podría suceder en el curso normal de la ejecución de un script.

WARNING: La ejecución del programa no se detiene.

ERROR: Ocurre dentro del programa y evita la secuencia lógica del programa.

Para mostrar u ocultar estos errores se utiliza la función error_reporting(), el cual utiliza los siguientes parámetros.

Es importante saber que error_reporting() funciona si el archivo de configuración php.ini, tiene el valor Display_errors = On. En caso de no tener acceso a este archivo de configuración, es posible establecer en tiempo de ejecución dicho valor. Esto se hace utilizando la función ini_set(), la cual se encarga de establecer valores de configuración en tiempo de ejecución. Sin embargo, es una solución incompleta debido a que si existe un error sintáctico en el archivo donde se llama esta función no podrá visualizarse dicho error.

https://gist.github.com/jeavila/d83de243e82caaf10931bfb710dca199

Es de hacer notar que en ambientes de producción los mensajes de error no deben visualizarse por sencillas razones: