Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exception et debug

Sujet résolu
    25 février 2016 à 9:35:01

    Bonjour,

    Voilà un probleme que je ne rencontre pas pour la premiere fois. 

    Quand je code en python je met des try-except de partout pour éviter les crashs. 

    Le probleme est que quand je veux modifier ce code plus tard, ca devient tres dur de debugger parce que les exceptions catchs les bug et du coup je ne vois pas l'erreur.

    Au lieu de récuperer la ligne de code qui rate, je récupère la ligne de l'exception.

    Si je sors la fonction de l'excetion, bim je tombe dans une autre exception.

    Au final pour ne tomber dans aucune exception, je dois commenter 3, 4 exceptions, puis les décommenter apres avoir trouver le bug...

    1) Y a t'il une commande qui permet d'annuler toute les exceptions du programme?

    2) Comment mieux gérer les exceptions? Je pense que j'en met trop, notement autour de grosse fonction. Comment savoir si il faut mettre une exception, ou si c'est "trop haut" pour en mettre une? Y a il une question à se poser?

    Merci d'avance!

    • Partager sur Facebook
    • Partager sur Twitter
      25 février 2016 à 9:43:16

      Trouve une meilleur méthode que les try-except de partout, et précise les exceptions a capturer au lieu de mettre juste except.
      • Partager sur Facebook
      • Partager sur Twitter
      Créateur de mauvaises blagues et de mauvais jeux depuis 1999 - Endless-caves - Endless-rooms
        25 février 2016 à 10:33:17

        Merci de ta réponse,

        Aucune commande n'existe pour désactiver les try / except?

        Capturer les excepton c'est vrai que je devrai faire ca, ca agit comme un filtre? (je veux que ce type d'erreur ?)

        • Partager sur Facebook
        • Partager sur Twitter
          25 février 2016 à 11:05:07

          Tu aurais un exemple de try/except que tu penses être de trop ?

          -
          Edité par Jevanni 25 février 2016 à 11:05:35

          • Partager sur Facebook
          • Partager sur Twitter
            25 février 2016 à 11:35:17

            J'encapsule tout, ca part du main jusqu'au petite action

            def main

            def main()
            
                try :
                    fct1(arg1, arg2)
                except:
                    print: 'Erreur call fct1, check argument : ', arg1, arg2
            
            
            def fct1(arg1, arg2)
                try :
                    fc21(arg1, arg2)
                except:
                    print: 'Erreur call fct2, check argument : ', arg1, arg2
            
            def fct2(arg1, arg2)
                for i in range(5):
                    a += arg1[i]
            
                

            La typiquement, si j'ai un erreur d'indexe dans fct2, je vais tomber dans le 2eme try/except, si je lsors l'appel pour voir l'erreur, paf je tombe dans le premer try/except

            Du coup je pense qu'il ne faut pas en mettre autour de fonction qu'on a crée? les mettre plus proche des erreurs?

            Ou comme me disait Reiex, gerer les erreurs? Parce ca moi pour l'instant je les gere vraiment jamais, c'est soit je print quelque chose, soit j'attribue une valeur par defaut soit je pass

            ps: La j me rend compte en decrivant le probleme que je fais tout à l'envers non? Je devrais enlever les 2 try except, mais en mettre un dans fct2?

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              25 février 2016 à 11:46:32

              Il faut toujours préciser l'exception ou les exceptions que tu veux capturer avec l'instruction except sinon on se retrouve à ne pas savoir quelle exception est déclenchée et il est impossible de debugger son script.

              try:
                  function(arguments)
              except ValueError:
                  print('Erreur de valeur')
              except TypeError:
                  print('Erreur de type')
              
              • Partager sur Facebook
              • Partager sur Twitter

              Exception et debug

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown