En la entrega anterior vimos de manera sencilla qué son y cómo funcionan las Excepciones en PHP 5. En esta ocasión veremos ejemplos semi-reales y repasaremos algunos detalles que debemos tener en cuenta a la hora de usar excepciones.
Las excepciones no te salvan
Si estás pensando que las excepciones te salvarán tus errores, ni lo intentes. El uso de excepciones no solventa los errores de programación, eso sácalo de tu mente.
Las excepciones se utilizan para solventar errores en tiempo de ejecución, es decir, cualquier intento fallido lo manejas con excepciones para mostrarle un mensaje bonito al usuario final.
Ejemplo
Este código intenta abrir un archivo, en caso que no exista se tirará la excepción, de lo contrario mostrará un mensaje que muestre que el archivo se abrió correctamente.
<?php
try
{
if( ! fopen( "miarchivo.php",'r' ) )
{
throw new Exception('Error al abrir el archivo.');
}
echo "El archivo fue abierto correctamente.";
// ...Código para trabajar con el archivo....
}
catch (Exception $e)
{
echo $e->getMessage(), "\n";
}
?>
Si el archivo no existe o si ocurrió un error al intentar abrirlo, el mensaje que mostraría PHP sin el manejo de excepciones sería el siguiente:
Warning: fopen(miarchivo.php) [function.fopen]: failed to open stream: No such file or directory in path\exception.php on line 5
En cambio, con el manejo de excepciones el Script mostrará el siguiente error:
Error al abrir el archivo, es posible que no exista.
Claro, PHP siempre mostrará sus mensajes de error, mientras no se le indique lo contrario, es decir, además de tu mensaje personalizado también aparecerá el mensaje de error generado por PHP.
De hecho, es recomendable desactivar los mensajes de error del PHP una vez que el software ya esté en manos del usuario final (por motivos de seguridad más que por estética).
El ejemplo es sencillo y es utilizable en cualquier caso de uso real, así que espero que les sirva de algo.
Entradas relacionadas
Si tienes alguna duda sobre PHP o igual te interesa el tema y deseas conocer gente del medio, puedes contactarnos en irc desde el servidor: 69.64.59.193 en el canal #php.

Alfredo Juarez is Digg proof thanks to caching by WP Super Cache