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

Python Discussion :

Gestion d'erreurs, gestion d'erreurs je patoge.


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 12
    Par défaut Gestion d'erreurs, gestion d'erreurs je patoge.
    Bonjour, je ne comprends toujours pas bien les mécanismes de la gestion d'erreur sur python. J'ai bien compris le concept de try et except, cependant pour différencié les exception autres que RuntimeError, TypeError, NameError etc... je ne comprends absolument pas.
    J'ai un script qui me renvoie 2 types d'erreurs en général et rien quand tout fonctionne bien sur et je voudrais bien pouvoir différencié ces 2 erreurs pour pouvoir les traiter je ne peux donc pas simplement utiliser un try, except et ne pas différencier les erreurs.

    J'ai ces deux erreurs donc:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
    File "/home/tutule/dev/css/test.py", line 6, in <module>
        ...
    timeout: timed out
    et:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Traceback (most recent call last):
    FILE "/home/tutule/..."
    ...
    error: [Errno 111] Connection refused
    Voilà est ce que je pourrais avoir des pistes?

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Salut

    Quel est le type exact des erreurs ? Montrez toute la stacktrace (le message affiché).

    Un timeout correspond à une durée limite écoulée. Dans le cadre d'une connexion par socket, ça peut signifier que la machine distante à été trop lente à répondre. Par extension, elle n'existe peut-être tout simplement pas.

    L'erreur avec errno est une erreur système UNIX. Connexion refusée signifie que la machine distante existe, mais que le port demandé n'est pas ouvert ou pas accessible (firewall).

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 12
    Par défaut
    Citation Envoyé par Antoine_935 Voir le message
    Salut

    Quel est le type exact des erreurs ? Montrez toute la stacktrace (le message affiché).

    Un timeout correspond à une durée limite écoulée. Dans le cadre d'une connexion par socket, ça peut signifier que la machine distante à été trop lente à répondre. Par extension, elle n'existe peut-être tout simplement pas.

    L'erreur avec errno est une erreur système UNIX. Connexion refusée signifie que la machine distante existe, mais que le port demandé n'est pas ouvert ou pas accessible (firewall).
    Oui c'est exactement sa ça, mais je voudrais pouvoir gerer le timeout ou le acces refusé différement .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Traceback (most recent call last):
      File "/home/tutule/dev/css/test.py",...
    timeout: timed out
    le probleme c'est que j'arrive pas a identifié le type d'erreut et je suppose comme dans tous language evolué il ya bien moyen de traiter ces erreurs !

    Mon code fonctionne absolument bien avec le bon couple IP/Port ! Mais je voudrais justement gerer les eventualités ou celà ne fonctionne pas ou que l'acces est effectivement bloqué de façon différente.

  4. #4
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Tiens c'est marrant, impossible de voir le type, de fait.
    Faites-vous appel à une librairie compilée ?

    Quoi qu'il en soit, vous pouvez trouver la classe de l'exception comme ceci : (enfin... je l'espère)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try:
        ...
    except:
        print sys.exc_type().__class__
    Retirez le .__class__ si ça ne fonctionne tjs pas.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 12
    Par défaut
    sa ne renvoit rien si ce n'est un espace .
    J'utilise un script qui communique avec les serveurs de jeux via ce qu'ils appellent un rcon. Le script utilisé est SRCDS.py rien n'est compilé non... mais ces erreurs ne sont pas pris en charge en dur dans le code...

    Mais je cherche vraiment un moyen de faire façe !

  6. #6
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    sa ne renvoit rien si ce n'est un espace
    Charmant...
    Quelle version de python utilisez-vous ?

    Je ne vois qu'une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    try:
        ...
    except:
        # Dans tous les cas d'erreur
    Voyez si sys.exc_info peut vous apporter quelque chose d'utile. Quitte à comparer des chaînes de caractères. Ce n'est pas propre, certes, mais je sèche un peu là...


    EDIT:
    Attendez... si tout est en python... vous avez peut-être affaire à une socket.error. Python 2.4 ?

  7. #7
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut, tu peux cumuler les except

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    try:
        do something
    except IOError, (errno, strerror):
        print "Erreur :", (errno, streerror)
    except ValueError:
        print "Entrée érronée ..."
    except:
        print "Ya un truc qui va pas."
    vincent
    ...gillé par Antoine_935

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

Discussions similaires

  1. [AC-2003] Gestion des erreurs - Rapport d'erreurs sous access
    Par mbellemax dans le forum VBA Access
    Réponses: 5
    Dernier message: 13/10/2009, 10h46
  2. Erreur gestion des droits Jasper Serveur
    Par meurwinn dans le forum Jasperserver
    Réponses: 4
    Dernier message: 19/03/2008, 11h09
  3. Gestion de photos par formulaire (erreur 2176)
    Par cams dans le forum VBA Access
    Réponses: 0
    Dernier message: 11/01/2008, 16h49
  4. Gestion des erreurs: table des erreurs
    Par capitaine dans le forum Access
    Réponses: 1
    Dernier message: 06/07/2006, 20h10
  5. Gestion des transactions - Gestion des erreurs
    Par devdev dans le forum MS SQL Server
    Réponses: 14
    Dernier message: 23/03/2005, 20h17

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