Signaler

Lever une exception [Résolu]

Posez votre question aze - Dernière réponse le 15 juin 2017 à 19:09 par 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.

	
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

Utile
+1
plus moins
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))
Cette réponse vous a-t-elle aidé ?  
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !