Wyjątki w Pythonie

Jak stosować wyjątki w Pythonie - przechwytywanie rzucanych przez aplikację wyjątki, jak i rzucanie własnych wyjątków w przypadku błędnego funkcjonowania kodu

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)
blog comments powered by Disqus

Kategorie

Strony