>>> while 1 print 'Hello world'
File "<stdin>", line 1
while 1 print 'Hello world'
^
SyntaxError: invalid syntax
Dozvíte se, v jakém souboru na jaké řádkce je chyba syntaxe (stdin
je "soubor" standardní vstup) a řádka s chybou je vypsána.
try:
prikaz
prikaz
...
except:
prikaz
...
else:
prikaz
...
Nejdříve se provádějí příkazy v bloku za try:, pokud dojde k jakékoliv výjimce, další příkazy se v bloku try: již neprovedou, provedou se příkazy v bloku za except:. Pokud nedojde k žádné výjimce, provedou se i příkazy v bloku else:. Blok else je nepovinný.
Pokud si myslíte, že může dojít k výjimce během provádění bloku za except: nebo else:, můžete uvnitř těchto bloků použít další příkaz try: (a tak dál, až do zblbnutí ...).>>> try: ... print 3 + 3 ... print 'x' + 3 ... print 2 + 2 ... except: ... 'Doslo k chybe' ... else: ... 'Nedoslo k chybe' ... 6 'Doslo k chybe'
>>> raise NameError, 'HiThere' Traceback (most recent call last): File "<stdin>", line 1, in ? NameError: HiThere >>> raise NameError Traceback (most recent call last): File "<stdin>", line 1, in ? NameError
Návěstí except: může odchytávat i více výjimek najednou:>>> try: ... raise NameError ... except IOError: ... print 'Vyjimka vstupu/vystupu' ... except NameError: ... print 'Nexistujici jmeno objektu' ... except: ... print 'Vyjimka, netusim jaka' ... else: ... print 'Alles ist gut' ... Nexistujici jmeno objektu
...
except
(vyjimka1,vyjimka2,vyjimka3
):
Aby toho nebylo dost, může návěstí odchytávat správy výjimek:
import string, sys
try:
f = open('myfile.txt')
s = f.readline()
i = int(string.strip(s))
except IOError, (errno, strerror):
print "I/O error(%s): %s" % (errno, strerror)
except ValueError:
print "Could not convert data to an integer."
except:
print "Unexpected error:", sys.exc_info()[0]
raise
Tento příklad je z info stránek Pythonu. Pokud chcete vědět o
výjimkách více, zadejte na příkazovou řádku příkaz info
python, šipkou najeďte na * Errors and Exceptions::. a
zmáčkněte ENTER. Text posouvejte mezerníkem. (Toto platí pro
uživatele Linuxu).
K příkazu import se dostaneme v kapitole Moduly
