IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

gestion des erreur sous perl


Sujet :

Programmation et administration système Perl

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut gestion des erreur sous perl
    Salut,

    Voici mon soucis,
    en perl avec certains module comme ftp,dbi,
    quand une methode ne fonctionne pas avec le "or die" on sort du programme.
    or die "Cannot login ", $ftp->message;
    moi ce que je voudrais , est que si ça plante alors, je recupere le message d'erreur dans ma log et je sors du prod;

    merci

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par donny Voir le message
    moi ce que je voudrais , est que si ça plante alors, je recupere le message d'erreur dans ma log et je sors du prod;
    Le 'prod' est le programme je suppose. Le die te fait sortir du programme, il y a aussi l'exit() si tu préfères mais je ne vois pas ce que tu as contre le die.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    open my $log_file, '>>', 'chemin/fichier_log' or die $_;
    ...
    ... or die print $log_file "Cannot login  $ftp->message";
    Tu peux aussi dire que STDERR (à moins que ce ne soit STDOUT) est ton fichier log et non l'écran.

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    en faite, je me suis mal exprimé
    j'utilise log4perl pour la log

    mais le truc que je n'arrive pas à faire,
    c'est par exemple quand j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ftp->login("$machine",'test')
          or die "Cannot login ", $ftp->message;
    en faite je ne veux pas que mon programme plante quand il n'arrive pas a se loguer;
    donc je souhaite enlever le die.

    Le problème est que si je l'enleve comment je vais savoir que mon programme n'a pas reussi à se loguer ??

    Je pourrai utiliser un eval par example :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    eval {      
    ftp->login("$machine",'test')
          or die "Cannot login ", $ftp->message;
    if ($@) {
    	$malog->fatal("Erreur de login");exit 1;
    }
    Mais le soucis, c'est comment je peux savoir que ça a planter ???
    a moins de tester tout les codes retour du ftp login,
    c est une mission impossible.

  4. #4
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par donny Voir le message
    en faite je ne veux pas que mon programme plante quand il n'arrive pas a se loguer;
    donc je souhaite enlever le die

    Mais le soucis, c'est comment je peux savoir que ça a planter ???
    a moins de tester tout les codes retour du ftp login,
    c est une mission impossible.
    Utilise warn au lieu de die.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ftp->login("$machine",'test')
          or warn "Cannot login ", $ftp->message;

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    d'accord mais sa resouds pas completement mon problème,
    le warn ne va pas bloquer mon programme certes,
    mais moi je fais comment pour tester que c'est en erreur.
    Je suis obliger de tester le code retour de chaque erreur et les code retour sont different.

    Alors que le die , quand il y a une erreur , fait planter mon script.
    Moi ce que je voudrais en faite, c'est pouvoir detecter l'erreur comme le die.

  6. #6
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Citation Envoyé par donny Voir le message
    Alors que le die , quand il y a une erreur , fait planter mon script.
    Moi ce que je voudrais en faite, c'est pouvoir detecter l'erreur comme le die.
    warn te donne également les erreurs sur STDERR tout comme die. La seule différence entre ces 2 fonctions est que warn ne force pas le script à s'arrêter. Si tu ne veux pas écrire sur STDERR redirige les messages vers ton fichier log.

  7. #7
    Membre habitué
    Inscrit en
    Janvier 2004
    Messages
    532
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 532
    Points : 144
    Points
    144
    Par défaut
    je connais la difference entre les deux, je te remerci

    en faite, je viens de relire ta premiere intervention
    faire un truc comme cela (je viens de tester)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ftp->login("$machine",'test')
    or die $malog->fatal("Error :".$ftp->message);
    c'est propre ?c'est "PERL" ?

    Parceque si sa l'est c'est bon,
    je retrouve bien le message dans mon fichier de log
    et cela fait bien planter mon script

  8. #8
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par donny Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ftp->login("$machine",'test')
    or die $malog->fatal("Error :".$ftp->message);
    c'est propre ?c'est "PERL" ?
    Pas vraiment. Néanmoins, Log4Perl a bien sûr prévu cette éventualité très courante, il suffit d'utiliser logdie() à la place de die().

    --
    Jedaï

Discussions similaires

  1. Gestion des erreurs sous PDI
    Par arno974 dans le forum kettle/PDI
    Réponses: 0
    Dernier message: 10/06/2010, 19h09
  2. Gestion des erreurs sous Java
    Par User Name dans le forum Langage
    Réponses: 4
    Dernier message: 13/01/2010, 16h24
  3. Gestion des erreurs sous nunit
    Par vanhel dans le forum EDI/Outils
    Réponses: 1
    Dernier message: 21/07/2009, 16h58
  4. Gestion des erreurs sous SSIS
    Par ygrim dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/11/2007, 17h18
  5. Gestion d'erreurs sous PERL
    Par lalystar dans le forum Langage
    Réponses: 3
    Dernier message: 22/08/2006, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo