Excepciones en PHP 5

Post date: Aug 27, 2010 4:26:14 AM

PHP 5 introduce la noción de excepcion de manera clásico con una instrucción "throw" que permite lanzar una condición de excepción, por ejemplo, cuando un programa detecta que las condiciones normales de ejecución no se satisfacen y una declaración de bloques de captura "try-catch" para el manejo de estas condiciones en un flujo de ejecución alterno. Cualquier excepción puede ser "lanzada" en diferentes partes de una aplicación, y ser atrapada en el correspondiente bloque de captura. Aunque esta combinación puede parecer trivial, realmente proporciona un mecanismo robusto de gestión de errores, sobre todo porque el lanzamiento de la excepción y su captura pueden estar dentro de diferentes segmentos de programa. El manejo de condiciones de error como excepciones permite delegar la gestión de errores al código del cliente y proporciona información útil y detallada sobre la falla del programa, facilitando el manejo de múltiples condiciones de error, por lo que le permite un flujo de programa independiente de las rutinas de gestión de errores.

El siguiente ejemplo define una clase "LectorDeArchivo" y lanza excepciones si el archivo no existe o si el contenido no se puede acceder:

class LectorDeArchivo{ private $file; private $fileDir='fileDir/'; public function __construct($file){ if(!file_exists("{$this->fileDir}{$file}.php")){ throw new Exception('Archivo '.$file.' no encontrado'); } $this->file=$file; } public function getContent(){ if(!$content=file_get_contents("{$this->fileDir}{$this- { throw new Exception('Imposible leer el contenido del archivo'); } return $content; } }

La ventaja de usar excepciones acá es que el cliente de esta clase no tiene que preguntar por las condiciones de error en su flujo normal, sino que debe manejar las posibles excepciones que surjan al utilizar la clase LectorDeArchivo en un flujo alterno:

try{ $fr=new LectorDeArchivo('archivo_ejemplo'); // Condición de error potencial // mostrar contenido echo $fr->getContent(); // Condición de error potencial } catch(Exception $e){ echo $e->getMessage(); exit(); }

Como puede observarse, la creación de la instancia del objeto, junto con las llamadas a métodos, se envuelven en un solo bloque de captura, las excepciones que pudieran ser lanzadas desde la clase serán manejadas allí. En este ejemplo, la acción de captura consiste simplemente en escribir el mensaje usando echo y salir del programa.

Enlaces relacionados

Cursos relacionados