lunes, 9 de septiembre de 2013

Tratamiento de errores en Perl


En en Lenguaje Perl no existe por defecto el clásico try catch de otros lenguajes de programación, pero esto no significa que no se puedan capturar errores y evitar que la ejecución del programa se vea interrumpida, para ello su utiliza la sentencia eval{sentencias a evaluar}, En el tiempo de ejecución, si el motor Perl encuentra un error en una sentencia del bloque eval, omite el resto del bloque eval y establece con la variable especial de eval -> "$@" el texto de error correspondiente, sin detener la ejecución del programa.

En el siguiente ejemplo, puedes ver un modo de controlar la división por zero, en ningún momento la ejecución del programa se ve interrumpida, puedes probarlo introduciendo como primer número 12 y como segundo 0, es decir, 12/0


#TRATAMIENTOS DE ERRORES EN PERL - eval{}
#prueba a dividir por 0 para ver el resultado

#Función para establecer una división entre dos números
sub division{
local($a, $b) = @_;
return $a / $b;
}

#Función que inicia el programa
sub init{
print "\n \n Prueba de error, division por ZERO ... \n \n";
print "Introduce un numero ... ";
$num_1 = <STDIN>;
print "Introduce otro numero ... ";
$num_2 = <STDIN>;
#Preparamos la excepción mediante eval
$resultado = eval{division($num_1, $num_2)};
if($@)
{
print "\n \n Lo siento ha ocurrido un error, empezamos de nuevo ... ! \n \n";
init();
}
else
{
print "El resultado de la division es ... " . $resultado;
}
}
#inicia el programa
init();