Bonjour à tous,
J'ai créé une classe ParametreTypeIncorrect qui hérite de la classa Exception pour pouvoir gérer les types des arguments passés à des instructions comme IADD, SCONST, SOUT, SIN, etc ... Dans le cadre du petit programme que j'essaie de coder (que dieu me vienne en aide!), je ne considère que les types int et str.
Voici ma sous classe ParametreTypeIncorrect :
et voici une partie de mon code où je la lève :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 class ParametreTypeIncorrect(Exception): #Détecte une erreur lorsqu'un type autre que str et int existent def __init__(self,s): self.ArgumentPasse=s def get_ArgumentPasse(self): return self.ArgumentPasse def __repr__(self): return "'{}':Je ne connais que les 'int' et les 'str', désolé !".format(self.ArgumentPasse)
Je teste ma fonction VerificationDesCommandes avec l'exemple suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 def VerificationDesCommandes(LesCommandes): for s in LesCommandes: if len(s)==1: .......... else: assert(len(s)==2), "Element vide ou surnuméraire dans la liste des commandes" if (type(s[1])!=int) | (type(s[1])!=str): raise ParametreTypeIncorrect(s[1])
et j'obtiens le TraceBack suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 LesCommandes=[['SCONST','hello'],['SOUT'],['STOP']] VerificationDesCommandes(LesCommandes) print("Il a verifie et n'a pas trouve d'erreurs")
Est ce que __main__ est une méthode de la classe Exception ? Et comment je peux faire pour afficher le message d'erreur que j'ai mis dans la définition de la méthode __repr__ ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Traceback (most recent call last): File "VerificationCommandes.py", line 105, in <module> testVerificationDesCommandes(LesCommandes) File "VerificationCommandes.py", line 102, in testVerificationDesCommandes VerificationDesCommandes(LesCommandes) File "VerificationCommandes.py", line 91, in VerificationDesCommandes if (type(s[1])!=int) | (type(s[1])!=str): raise ParametreTypeIncorrect(s[1]) __main__.ParametreTypeIncorrect
Bien cordialement.
Partager