Comment utiliser le mot-clé "raise" en Python [dupliquer]

cette question a déjà une réponse ici:

  • lever manuellement (lancer) une exception en Python 5 réponses

j'ai lu la définition officielle de" Augmenter", mais je ne comprends toujours pas ce qu'elle fait.

en termes simples, qu'est-ce que"augmenter"?

Exemple d'utilisation serait utile.

198
demandé sur Jean-François Corbett 2012-12-19 21:27:28

6 réponses

il a 2 buts.

yentup a donné le premier.

il est utilisé pour soulever vos propres erreurs.

if something:
    raise Exception('My error!')

la seconde est de relancer l'exception current dans un gestionnaire d'exception, afin qu'elle puisse être manipulée plus loin dans la pile d'appels.

try:
  generate_exception()
except SomeException as e:
  if not can_handle(e):
    raise
  handle_exception(e)
252
répondu Ignacio Vazquez-Abrams 2017-05-23 12:02:48

il est utilisé pour augmenter les erreurs.

if something:
    raise Exception('My error!')

quelques exemples ici

28
répondu jackcogdill 2015-01-09 11:48:53

raise sans aucun argument est une utilisation spéciale de la syntaxe python. Ça veut dire obtenir l'exception et la relancer. Si cet usage avait pu être appelé reraise .

    raise

À Partir De La Référence Au Langage Python :

S'il n'y a pas d'expressions présentes, soulever de nouveau la dernière exception que était actif dans le champ d'application actuel.

Si raise est utilisé seul, sans argument est strictement utilisée pour relancer -ing. Si fait dans la situation qui n'est pas à un reraise d'une autre exception, l'erreur suivante est montrée: RuntimeError: No active exception to reraise

21
répondu Sohail Si 2017-10-24 12:23:05

vous pouvez l'utiliser pour soulever des erreurs dans le cadre de la vérification des erreurs:

if (a < b):
    raise ValueError()

ou traiter certaines erreurs, puis les transmettre dans le cadre du traitement des erreurs:

try:
    f = open('file.txt', 'r')
except IOError:
    # do some processing here
    # and then pass the error on
    raise
7
répondu sampson-chen 2012-12-19 17:49:16

raise cause une exception à la règle. D'autres langues utilisent le verbe "lancer" à la place.

Il est destiné à signaler une situation d'erreur; il signale que la situation est exceptionnelle à la circulation normale.

Les exceptions en relief

peuvent être récupérées par le code" upstream "(un bloc environnant, ou une fonction plus tôt sur la pile) pour le gérer, en utilisant une combinaison try , except .

6
répondu Martijn Pieters 2012-12-19 17:30:15

en plus de raise Exception("message") et raise Python 3 introduit une nouvelle forme, raise Exception("message") from e . Il est appelé exception chaining, il vous permet de préserver l'exception originale (la cause racine) avec son traceback.

c'est très similaire aux exceptions internes de C#.

plus d'information: https://www.python.org/dev/peps/pep-3134 /

6
répondu Stan Prokop 2017-05-04 08:11:41