Lever une exception

Résolu/Fermé
aze - 14 juin 2017 à 22:16
 aze - 15 juin 2017 à 19:09
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.

	
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))
1
merci gudu!
0