Hoe het sleutelwoord raise te gebruiken in Python

Ik heb de officiële definitie van “verhogen” gelezen, maar ik begrijp nog steeds niet helemaal wat het doet.

In de eenvoudigste bewoordingen, wat is “verhogen”?

Voorbeeldgebruik zou helpen.


Antwoord 1, autoriteit 100%

Het heeft twee doelen.

yentup heeft de eerste gegeven.

Het wordt gebruikt om je eigen fouten op te heffen.

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

De tweede is om de huidige uitzondering opnieuw te verhogen in een uitzonderingshandler, zodat deze verder in de call-stack kan worden afgehandeld.

try:
  generate_exception()
except SomeException as e:
  if not can_handle(e):
    raise
  handle_exception(e)

Antwoord 2, autoriteit 13%

Het wordt gebruikt voor het verhogen van fouten.

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

Enkele voorbeelden hier


Antwoord 3, autoriteit 12%

raise zonder argumenten is een speciaal gebruik van de python-syntaxis. Het betekent dat je de uitzondering krijgt en deze opnieuw verhoogt. Bij dit gebruik had het reraise kunnen heten.

    raise

Van De Python-taalreferentie:

Als er geen expressies aanwezig zijn, verhoogt raise de laatste uitzondering die
was actief in het huidige bereik.

Als raise alleen wordt gebruikt zonder enig argument, wordt dit strikt gebruikt voor reraise-ing. Indien gedaan in de situatie die niet bij een reraise van een andere uitzondering is, wordt de volgende fout getoond:
RuntimeError: No active exception to reraise


Antwoord 4, autoriteit 5%

Naast raise Exception("message") en raise heeft Python 3 een nieuwe vorm geïntroduceerd, raise Exception("message") from e . Het wordt exception chaining genoemd, het stelt je in staat om de originele uitzondering (de hoofdoorzaak) met zijn traceback te behouden.

Het lijkt erg op innerlijke uitzonderingen van C#.

Meer informatie:
https://www.python.org/dev/peps/pep-3134/


Antwoord 5, autoriteit 4%

U kunt het gebruiken om fouten te melden als onderdeel van foutcontrole:

if (a < b):
    raise ValueError()

Of behandel enkele fouten en geef ze vervolgens door als onderdeel van de foutafhandeling:

try:
    f = open('file.txt', 'r')
except IOError:
    # do some processing here
    # and then pass the error on
    raise

Antwoord 6, autoriteit 3%

raise zorgt ervoor dat er een exception wordt gegenereerd. Sommige andere talen gebruiken in plaats daarvan het werkwoord ‘gooien’.

Het is bedoeld om een ​​foutsituatie te signaleren; het geeft aan dat de situatie uitzonderlijk is voor de normale stroom.

Verhoogde uitzonderingen kunnen opnieuw worden opgevangen door code ‘upstream’ (een omringend blok of een functie eerder op de stapel) om het af te handelen, met behulp van een try, except combinatie.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes