Try + Catch - Excepciones con PHP !
Dentro de las funciones de PHP, existen las que manejan los errores, tal vez algunos de nosotros habilitamos la opcion de error_reporting(), para darnos a conocer donde truena o tiene algun detalle la aplicacion, estos se manifiestan a travez de la shell como Warning, notice, etc..
Para manejar las excepciones una de las formas ideales de ir recolectando todos estos detalles y seguir continuando con la aplicacion es el TRY CATCH, pueden chekar la documentacion en el sitio oficial de php www.php.net, dare una pequeña explicacion, muy chafa de lo que es la implementacion y uso de la funcion.
Quienes deseen pueden reafirmar el conocimiento con sus comentarios.
La estructura basica del try es la siguiente
try{
//mis argumentos para procesar
}
catch(Exception $e){
//procedimiento en caso de reportar errores
}
Ahora bien... try es el inicio de la funcion por asi decirlo, dentro de try... valga la redundancia, vamos a poner el codigo que vamos a procesar, en caso de que haya un error, la que sigue al terminar catch, atrapara la excepcion y de ahi podremos mostrar los datos de la misma (de la excepcion).
Las excepciones pueden ser inducidas por el usuario, o bien pueden ser retomados los errores que se recolectan de las funciones dentro del sistema, en caso de que alguna de ellas falle....... mmm... no precisamente fallar, sino que nos devuelva un error como resultado...
Tenemos de tener muy en claro que para que una excepcion se cumpla deberiamos evaluar los parametros que vamos a considerar, OJO !, porque esto puede ser un error inducido o un error de funciones.
Ejemplo basico:
$letra1 = "a";
$letra2 = "1";
evaluarLetras($letra1,$letra2)
function evaluarLetras($letra1,$letra2)
{
try{
if(stristr($letra1,"a-z") === false) throw new Exception("No vi ninguna letra !");
$cadena = "$letra1,$letra2)
return $cadena;
}
catch (Exception $e){
echo $e->getMessage();
}
}
ok. ok. creo que esta por demas explicar como va la funcioncita, vamos al grano ....
La funcion evaluarLetras( ) , solo juntara letra1 y letra2 en una cadena, perooooooooooooo.... si letra1 no es una letra entonces creara una excepcion !, la cual cortara la aplicacion y mandara directamente al catch!, donde se dice Exception $e, que sera la variable donde caeran todas las fallas de la aplicacion.
Cuando falle la comparacion se crea una nueva excepcion y le damos el mensaje ahi mismo, si queremos con un throw, que literalmente seria lanzar, no?
Una vez que se corto el proceso y mando la excepcion al catch, ahi podemos retormar la informacion de la excepcion:
$mi_variable -> getMessage(); //esto nos mostrara el error que pusimos cuando indicamos el throw new exception
$mi_variable->getLine(); //nos devuelve el numero de linea donde se creo la excepcion
$mi_variable->getCode(); // muestra el codigo donde estuvo la falla
Si googleamos, podremos encontrar mas caracteristicas de esta funcion para poder recolectar mas datos que nos den un reporte mas completo de la excepcion.
Dentro del Catch podemos dar mas parametros para que proceda en caso de un error, podemos hacer un log.... podemos actualizar una base de datos informando que hay error en los datos recibidos, podemos tronar el programa, x ...... lo que se les ocurra.
Bueno.... lo anterior fue un error inducido, pero podriamos tener un error de sistema, es exactamente lo mismo, solo que ahi toda exepcion va directo al catch con mensajes del sistema sin que tengamos que "personalizar".
$url= "www.mipagina.com";
compruebaUrl($url);
function compruebaUrl($url)
{
try{
$cadena = "$url";
if(stristr($url,"http") === false) throw new Exception("Url Incompleta");
return $cadena;
}
catch (Exception $e){
echo "Tuvimos una excepcion! \n";
echo $e->getMessage();
echo $e->getLine();
}
}
Explicacion: la funcion nos va a generar un error porque no tiene el http la url, el mensaje lo mostraremos junto con su linea donde fallo, no regresara nada la funcion y va directo al reporte.
Alguna duda?? manifiestate !!!
Comments (1)
-
Muy interesante el articulo y muy buen truco para PHP, es en general un gran sitio, lastima que lo tengas montado en Joomla...
0 Like





Leave your comments