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 :

try / except universel


Sujet :

Python

  1. #1
    Membre confirmé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Points : 455
    Points
    455
    Billets dans le blog
    1
    Par défaut try / except universel
    Bonjour,

    j'aimerais savoir s'il est possible de mettre un "point d’arrêt" générique à la levée de n'importe quelle exception.

    Je m'explique :
    - je suis en train de coder / tester
    - j'ai un petit bug qui entraîne la levée d'une exception : l’exécution est stoppée et python m'affiche la pile d'execution au moment de l'exception
    - j'encapsule la ligne fautive dans un try/except et je mets un point d'arrêt (sous Eclipse) sur le except.
    - je relance
    - quand le bug se produit, je me retrouve sur mon except et je peux étudier le problème
    - je trouve et corrige mon bug
    - j'enlève le try / except
    fin.

    pfff... c'est très long tout ça...
    Y aurait-il un moyen de placer un point d'arrêt automatique sur n'importe quelle ligne de code qui lève une exception ?
    Ou, par exemple, définir une fonction qui serait appelée dès qu'une exception est levée ?
    Comme ça je mets un point d'arrêt dedans et je m'épargne les ajouts/suppressions de try/except...

    Merci d'avance

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 435
    Points : 37 020
    Points
    37 020
    Par défaut
    Salut,

    J'utilise le truc suivant dans un module "debug":

    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
    import sys
     
    def pm_debug(type, value, tb):
        """use default handler when mode is interactive or wo console
        show exception and raise post mortem debugger in other cases.
        """
        if hasattr(sys, 'ps1') or not sys.stderr.isatty():
            sys.__excepthook__(type, value, tb)
        else:
            import traceback, pdb
            print ("******")
            traceback.print_exception(type, value, tb)
            pdb.post_mortem(tb)
     
    sys.excepthook = pm_debug
    import debug remplace sys.excepthook
    Lors de la levée d'une exception, çà lance pdb.

    Ca marche raisonnablement bien en mode console.
    Pour Eclipse, j'ai pas essaye
    - W

  3. #3
    Membre averti Avatar de Pierre Maurette
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    283
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 283
    Points : 390
    Points
    390
    Par défaut
    Bonjour,
    Puisque vous citez Eclipse, je suppose que vous utilisez Pydev. Voyez dans le menu Run le sous-menu Manage Python Exception Breakpoints. Je ne sais pas s'il y a une doc, mais c'est assez trivial, et vous pouvez faire une paire d'essais avec IOError ou ZeroDivisionError. C'est très pratique...

  4. #4
    Membre confirmé
    Avatar de Captain'Flam
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2011
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 273
    Points : 455
    Points
    455
    Billets dans le blog
    1
    Par défaut
    Merci Pierre, c'est exactement ce que je cherchais !

    Et merci aussi wiztricks : je garde ton truc sous le coude : on n'a pas toujours eclipse sous la main...

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

Discussions similaires

  1. try except qu'on m'explique
    Par pierrot67 dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/04/2006, 11h52
  2. Problème avec Try ... Except
    Par Kcintim dans le forum Langage
    Réponses: 1
    Dernier message: 25/03/2006, 16h31
  3. "try...except" sans message d'erreur
    Par SchpatziBreizh dans le forum Langage
    Réponses: 4
    Dernier message: 12/07/2005, 10h50
  4. [try except keyerror] récupérer le nom de la variable
    Par jean-jacques varvenne dans le forum Général Python
    Réponses: 2
    Dernier message: 03/03/2005, 17h59
  5. bloc try/except et API windows
    Par jakouz dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 24/02/2005, 13h21

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