Lever une exception
Résolu
aze
-
aze -
aze -
Bonsoir,
Savez-vous s'il est possible de "personnaliser" les exceptions qu'on lève?
Lorsque l'utilisateur entrer la mise, il peut commettre 2 erreurs.
Soit il entre des caractères (la conversion en int n'est pas possible, il y a une ValueError), soit il entre une valeur négative ou >= à 50, ce qui pour moi est évalement une "ValueError".
Si je veux personnaliser le message d'erreur je suis obligé de transformer une valueerror en une syntaxError. Il y a-t-il un moyen plus propre pour lever plusieurs exceptions d'un même type?
Voici mon code.
je vous remercie
Savez-vous s'il est possible de "personnaliser" les exceptions qu'on lève?
Lorsque l'utilisateur entrer la mise, il peut commettre 2 erreurs.
Soit il entre des caractères (la conversion en int n'est pas possible, il y a une ValueError), soit il entre une valeur négative ou >= à 50, ce qui pour moi est évalement une "ValueError".
Si je veux personnaliser le message d'erreur je suis obligé de transformer une valueerror en une syntaxError. Il y a-t-il un moyen plus propre pour lever plusieurs exceptions d'un même type?
Voici mon code.
mise = input()
try:
mise = int(mise)
if (0<=mise<50) == False :
raise SyntaxError
except ValueError:
print("""veuillez entrer un nombre en caractères numériques (exemple "49")""")
except SyntaxError:
print('Le nombre doit être de 0 à 49 compris')
je vous remercie
1 réponse
-
Tu peux utiliser une assertion pour faire ça.
Façon pour n'avoir qu'un message pour toutes les erreurs rencontrées.
while True: mise = input('Entrez un nombre entre 0 et 49 inclus : ') try: mise = int(mise) assert 0 <= mise < 50 except (ValueError, AssertionError): print("Veuillez entrer un nombre de 0 à 49 inclus !\n") else: break print('Mise de {}'.format(mise))
Mais tu peux aussi utiliser des messages pour chaque type d'erreur.
while True: mise = input('Entrez un nombre entre 0 et 49 inclus : ') try: mise = int(mise) assert 0 <= mise < 50 except ValueError: print("Veuillez entrer un nombre svp !\n") except AssertionError: print('Veuillez entre nombre entre 0 et 49 inclus svp !\n') else : break print('Mise de {}'.format(mise))