• Publicidad

Eliminar excepción

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Eliminar excepción

Notapor jmdelcampo » 2008-06-17 06:03 @293

Buenas tardes.

Estoy comprobando que se abre de manera correcta un fichero y en caso contrario escribo en un fichero de log.

Para abrir el fichero empleo el módulo Config::Simple y para escribir en el fichero el módulo Log::Log4perl.

Cuando ejecuto la siguiente sentencia, con el nombre del fichero mal:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $cfg = new Config::Simple($directorio_conf."clickstream_pruebarr.cfg") or $log->error_die("error_die");
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


El script escribe en el fichero de log y termina el programa pero aparece por pantalla lo siguiente:
Código: Seleccionar todo
bash-2.03$ ./parser_general_prueba.pl
Uncaught exception from user code:
        error_die at ./parser_general_prueba.pl line 33
 at ./parser_general_prueba.pl line 33


¿Como podría eliminarlo?
Saludos y gracias.
jmdelcampo
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2006-11-24 07:43 @363

Publicidad

Notapor explorer » 2008-06-17 06:39 @319

1. Puedes comprobar antes si existe o no el fichero de configuración:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
if ( -e "${directorio_conf}clickstream_pruebarr.cfg" ) {
    # abro el fichero...
    # ...
}
else {
    print "El fichero no existe\n";
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

2. Puedes hacer que no muera:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $cfg = new Config::Simple($directorio_conf."clickstream_pruebarr.cfg")
    or $log->error("El fichero de configuración no existe");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


3. Puedes capturar el error con un eval():
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
eval {
    my $cfg = new Config::Simple($directorio_conf."clickstream_pruebarr.cfg");
};
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


4. Sustituye el $log->error_die() por un die() con un "\n" al final:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $cfg = new Config::Simple($directorio_conf."clickstream_pruebarr.cfg")
    or die "No hay fichero\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

5. ...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor jmdelcampo » 2008-06-17 08:41 @403

Gracias
jmdelcampo
Perlero nuevo
Perlero nuevo
 
Mensajes: 32
Registrado: 2006-11-24 07:43 @363


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados