Wyjątki w Pythonie

Zgłoszenie wyjątku oznacza błąd programu i przerwanie normalnego działania programu. Wyjątki można generować samemu, lub też mogą one być generowane przez same moduły. By samemu wygenerować wyjątek korzystamy z instrukcji raise:
raise wyjątek [, wartość]
raise RuntimeError, 'Poważny błąd'
Aby przechwycić wyjątek trzeba użyć instrukcji try / except:
try: print "tutaj cos robimy" except TYP_WYJĄTKU, e: print "MAMY PROBLEM - ", e
Przykłady, proste:
try:
	a = 2
	b = 0
	if b == 0:
		raise RuntimeError, 'Nie mozna dzielic przez zero'
	print a/b
except RuntimeError, error:
	print "UWAGA: ", error
try:
	a = 2
	b = 0
	if b == 0:
		raise RuntimeError, 'Nie mozna dzielic przez zero'
	print a/b
except Exception, e:
	print "UWAGA ", e
Istnieje także wbudowany wyjątek ZeroDivisionError (łapany przez ogólny typ Exception):
try:
	a = 2
	b = 0
	print a/b
except Exception, e:
	print "UWAGA ", e
Istnieje wiele "typów" wyjątków, oto kilka z nich:
Exception - Wszystkie wyjątki
SystemExit - Generowany przez sys.exit()
IOError - Błędy związane z operacjami na plikach lub operacjami I/O
EOFError - Zgłaszany po osiągnięciu końca pliku
KeyboardInterrupt - Generowany przez klawisze przerwania (zazwyczaj CTRL+C)
SyntaxError - Błąd składni
Po bloku except można również dodać blok else, który wykonany zostanie jeżeli nie zgłoszony zostanie wyjątek. Można też stosować blok finally - kod tego bloku definiuje operacje mające zakończyć działanie kodu z bloku try. Bloki finally i except nie mogą być stosowane razem - finally zawiera kod, który niezależnie od wyjątków ma zostać wykonany (np. zamknięcie pliku mimo jakiś błędów)
RkBlog

Podstawy Pythona, 14 July 2008, Piotr Maliński

Comment article
RkBlog main page Search RSS Contact