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

Langage Perl Discussion :

cacher ou supprimes les messages d'erreur


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 88
    Points : 63
    Points
    63
    Par défaut cacher ou supprimes les messages d'erreur
    bonjour

    j'ai fais un script qui marche bien
    mais pour q'il soit un peut plus propre je ne voudrais pas avois des message
    d'erreur

    DBI connect('host=localhost;','root',...) failed: Access denied for user 'root'@'localhost' (using password: YES) at ./test_import_mysql line 230
    Connection impossible à la base de donnees

    voici le bout de code que j'utilise
    mais si le mot de pass n'est pas bon ou autre commentfaire pour avoir
    que Connection impossible à la base de donnees sans l'autre message d'erreur avant



    # Connection à la base de données mysql
    my $dbh = DBI->connect( "dbi:mysql:host=$NomHote;",$login, $MotDePass )
    or die "Connection impossible à la base de donnees $BaseDeDonnees \n ";
    Merci d'avance pour vos reponse

    Cordialement

  2. #2
    Membre confirmé Avatar de Beniou
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 357
    Points : 515
    Points
    515
    Par défaut
    Bonjour

    Tu peux changer certaines options lors de la connexion à la base comme "PrintError" et "RaiseError" pour qu"'il n'affiche pas les messages d'erreurs.
    Ensuite à toi de te créer une fonction erreur suivant les cas.

    Exemple (pas testé) avec une connexion bidon sur une base postgres, à toi d'adapter suivant ta config
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    use strict;
    use warnings;
    use DBI;
     
    my $database = "test";
    my $host = "localhost";
    my $user = "toto";
    my $password ="titi";
     
    my $dbh = DBI->connect("DBI:Pg:dbname=$database;host=$host",
    		$user,
    		$password,
    		{'RaiseError' => 0,
    		 'PrintError' => 0}) or &erreur_connexion();
     
     
    sub error_connexion{
      print "Erreur connexion\n";
    }
    Ensuitre à toi de gérer les différents types d'erreurs et de faire les deconnexions si jamais.

  3. #3
    Membre averti

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2011
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 184
    Points : 322
    Points
    322
    Par défaut
    Si tu ne veux supprimer que les messages d'erreurs de DBI, tu peux utiliser l'option PrintError.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $dbh = DBI->connect( "dbi:mysql:host=$NomHote;",$login, $MotDePass ,{'PrintError'=>0});

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 88
    Points : 63
    Points
    63
    Par défaut
    Merci pour vos reponse

    je ne connaissais pas ,{'PrintError'=>0}

    mon probleme est resolue

    je vais pouvoir continuer a faire mon script

    bien cordialement

  5. #5
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Points : 5 753
    Points
    5 753
    Par défaut
    Typiquement, l'idéal serait de laisser le module lever une exception, et la trapper dans ton programme appelant, comme expliqué dans la documentation de l'option RaiseError :
    Typically "RaiseError" is used in conjunction with "eval { ... }" to
    catch the exception that's been thrown and followed by an "if ($@) {
    ... }" block to handle the caught exception. For example:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
             eval {
               ...
               $sth->execute();
               ...
             };
             if ($@) {
               # $sth->err and $DBI::err will be true if error was from DBI
               warn $@; # print the error
               ... # do whatever you need to deal with the error
             }
    Dans ce contexte, comme expliqué dans la documentation, il serait judicieux de mettre PrintError à 0, et RaiseError à 1.

    Ainsi, tu pourras à la fois afficher ton propre texte en cas de défaut, mais aussi, tu disposeras dans $@ du message d'erreur que la méthode a généré.
    Plus j'apprends, et plus je mesure mon ignorance (philou67430)
    Toute technologie suffisamment avancée est indiscernable d'un script Perl (Llama book)
    Partagez vos problèmes pour que l'on partage ensemble nos solutions : je ne réponds pas aux questions techniques par message privé
    Si c'est utile, say

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment supprimer les message d'erreur Gtk+ ?
    Par Slookeur dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 09/06/2009, 09h29
  2. [2.2.2] Supprimer les messages d'erreur
    Par alexandre_71 dans le forum BIRT
    Réponses: 3
    Dernier message: 18/03/2009, 17h24
  3. [SimpleXML] Supprimer les messages d'erreur de SimpleXMLElement
    Par cybertj dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 21/05/2007, 21h42
  4. [Message d'erreur] gérer les message d'erreurs
    Par heid dans le forum Langage
    Réponses: 2
    Dernier message: 12/10/2004, 14h57
  5. recuperer les messages d'erreurs de interbase
    Par devalender dans le forum Bases de données
    Réponses: 2
    Dernier message: 23/06/2004, 11h45

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