2.22. Exceptions (undtagelser)


eks. 1
>>> x
Traceback (most recent call last):
  File "<pyshell\# 0>", line 1, in ?
    x
NameError: name 'x' is not defined


Ved at fortolke koden bagfra finder Python en fejl i linje 1. Det viser sig at være en navnefejl - variablen x er ikke defineret.

Der findes ofte rester af forskellig slags i arbejdslageret, er den krævede definering en meget stor fordel, for den betyder, at en nyerklæret variabel samtidig tildeles en værdi.En variabel i Python altid pege på den værdi, som du eller en anden programmør har sat den til ved seneste anvendelse. Den kan ganske enkelt ikke pege på en af de nævnte datarester.

eks. 2 Vi kunne undgå fejlmeldingen ovenfor ved at tildele variablen en værdi. Så er alt for så vidt i orden, i hvert fald i det aktuelle tilfælde:


>>> # Her er variablen defineret
>>> x = 1
>>> try: print x
except Navnefejl: x = 0
1


Fordi variablen er erklæret og tildelt værdi, så kan try løkken gennemføres tilfredsstillende, så afviklingen når aldrig frem til except løkken.


>>> # Tilsvarende uden defineret variabel
>>> try: print y
except Navnefejl: y = 0
Traceback (most recent call last):
  File "<pyshell\#51>", line 3, in -toplevel-
    except Navnefejl: y = 0
NameError: name 'Navnefejl' is not defined


Fordi variablen ikke er erklæret og tildelt værdi, så kan try løkken ikke gennemføres tilfredsstillende, så afviklingen når frem til except løkken. Her gives fejlmelding, da Navnefejl er ukendt, det samme gælder y, men afviklingen afbrydes inden y behandles.