Sigueme por RSS! RSS

Las excepciones en PHP

En una aplicación cabe la posibilidad de que se produzca un error por una u otra razón, algunas de estas fallas, dependiendo de como se haya programado el sistema, pueden simplemente detener su ejecución, siendo así contraproducente.

Desde PHP4 disponemos de una serie de funciones de manejo de errores, y, a partir de la versión 5, ya podemos trabajar con modelos de excepciones algo similar al de otros lenguajes como JAVA.

Las excepciones, entre otras cosas, nos permiten controlar esos errores, indicar que un problema ocurre durante la ejecución del programa sin necesidad de que se vea afectado por el problema.

Una excepción puede ser lanzada "thrown", y capturada "catched" dentro de PHP. El código debe estar delimitado dentro de un bloque "try", para facilitar el capturar las excepciones potenciales. Cada bloque try debe tener al menos un bloque catch.

Estructura básica del manejo de excepciones:
try{
    //procedimiento que pueda producir una excepción
}
catch(Exception $e){
    //procedimiento para gestionar el posible error 
}

Dentro del bloque try incluimos el procedimiento donde pudiera producirse algún error que deseemos gestionar, esa falla podemos gestionarla dentro del bloque catch.

Veamos un ejemplo:
try {
   if (!$handle = fopen('archivo.txt', "w+"))
      throw new Exception('no se puede acceder al archivo');

   if (fwrite($handle2,'contenido ..') === false) 
      throw new Exception('no se puede escribir en el archivo');          
    
   fclose($handle);
   echo 'archivo creado satifactoriamente ..';
}
catch (Exception $e){
   echo 'Excepcion capturada: ',$e->getMessage();
}

echo ' - independientemente del error, imporimira esta linea..';

/* devuelve en este caso:
"Excepción capturada: no se puede escribir en el archivo ...."

debido a que no se le pasa un valor correcto al primer parámetro de fwrite
*/

throw new Exception() nos permite lanzar las excepciones manualmente.

En el ejemplo usamos el método getMessage() para mostrar el mensaje lanzado, disponemos de varios para trabajar:

getMessage() -> devuelve el mensaje de la excepción.
getCode() -> devuelve el código pasado al constructor (segundo parámetro), de lo contrario cero.
getFile() -> devuelve la ruta completa del archivo que haya lanzado la excepción.
getPrevious -> devuelve la Excepción anterior.
getLine() -> devuelve el número de línea donde se ha producido la excepción.
getTrace() -> obtiene el seguimiento de la pila..

Las excepciones básicamente, te permitirán personalizar los posibles errores del sistema, esto dependiendo de los datos a procesar, podrías llevar un registro (LOG) de dichas fallas y en lugar de mostrar un mensaje personalizado, redireccionar a una página de informe de error.

nota
Hay que tomar en cuenta que si no desactivamos la visualización de errores, se mostraran los que genera PHP indiferentemente de si usamos excepciones o no.

Referencias:
php.net
w3schools.com

0 comentarios: Suscribete a los comentarios por RSS

Publicar un comentario

- Los comentarios están siendo moderados y serán publicados en la brevedad posible.