Przechwytywanie wyjątków w Pythonie
W Pythonie w porównaniu do innych języków programowania występuje bardzo wiele sytuacji, które powodują wyjątki.
Przyjrzyjmy się im bardziej szczegółowo. Załóżmy, że mamy listę:
lst = [1, 2, 3]
Odwołajmy się do nieistniejącego elementu listy:
print(lts[4])
Po wykonaniu kodu zostanie wyświetlony błąd (wyjątek):
IndexError: list index out of range
Jeśli jednak chcemy kontynuować pracę bez
wyświetlania wyjątku, należy go złapać za
pomocą konstrukcji try-except. Ma
ona następującą składnię:
try:
# kod, który może powodować wyjątek
except:
# obsługa błędu
W bloku try należy umieszczać kod,
który może zawierać wyjątek. Jeśli
nagle podczas wykonywania tego kodu wystąpi
sytuacja wyjątkowa, to wykonanie
kodu nie zostanie zatrzymane, ale przejdzie do kodu bloku
except. W tym bloku należy
wpisać wyświetlenie komunikatu, który maksymalnie
dokładnie opisuje istotę powstałego błędu.
Jeśli natomiast podczas wykonywania bloku try
nie wystąpiły żadne sytuacje wyjątkowe,
to pożyteczny kod po prostu się wykona, a kod
z bloku except - nie.
Przechwyćmy nasz wyjątek przy odwołaniu
się do nieistniejącego elementu listy. W tym
celu w bloku try umieścimy kod z
potencjalnym błędem. A w bloku except
wskazemy wyświetlenie w konsoli komunikatu 'error:
elem is not exist':
lst = [1, 2, 3]
try:
print(lst[4])
except:
print('error: elem is not exist')
Po wykonaniu kodu wyświetli się:
'error: elem is not exist'
Po zapoznaniu się z konstrukcją try-except
styl napisanego przez ciebie kodu powinien ulec zmianie.
Teraz wszystkie miejsca, w których może wystąpić
sytuacja wyjątkowa, należy opakowywać
w try, a w bloku except
wpisywać reakcję na ten wyjątek.
Poproś użytkownika o dwie liczby. Podziel jedną przez drugą. Przechwyć sytuację wyjątkową dzielenia przez zero.
Poproś użytkownika o liczbę. Znajdź pierwiastek kwadratowy z tej liczby. Przechwyć sytuację wyjątkową pierwiastkowania liczby ujemnej.
Dana jest lista. Poproś użytkownika o liczbę całkowitą. Pobierz element listy, którego numer wpisał użytkownik. Przechwyć sytuację wyjątkową, która wystąpi, jeśli użytkownik wpisał liczbę spoza zakresu listy.
Dany jest następujący kod:
num = '5'
res = num + 2
print(res)
Co jest nie tak z tym kodem? Popraw jego niedociągnięcia.
Dany jest następujący kod:
lst = [1, 2, 3, 4]
def getElem(iter):
print(iter[4])
getElem(lst)
Co jest nie tak z tym kodem? Popraw jego niedociągnięcia.