Łapanie konkretnych wyjątków

Wiemy jak łapać wszystkie wyjątki a teraz czas na bardziej sprecyzowane działania.

Gdy w naszym kodzie wrócimy do: b = 0, uruchomimy ten kod w konsoli to zobaczymy wyjątek o nazwie ZeroDivisionError. Możemy tak przekształcić nasz kod, aby tylko ten konkretny wyjątek był wyłapywany:

a = 1
b = 0

try:
   result = a / b
   print(result)
except ZeroDivisionError as zero_error:
   print(zero_error)
   print("Error! ZeroDivisionError!")

Świetnie! Zabezpieczyliśmy się przed zerowym mianownikiem.

Dodatkowo pojawiło się wyrażenie as. Co ono oznacza? Musimy spojrzeć na całą linię – except ZeroDivisionError as zero_error: oznacza, że przechwycony wyjątek zostanie przypisany do zmiennej zero_error, która to już może być bezpiecznie wypisana na ekranie a program będzie dalej kontynuował operacje. Śmiało przetestuj to poprzez wykonanie powyższego kodu.

A co jeśli do b przypiszemy wartość nieliczbową? Na przykład b = "text"? Wtedy na konsoli ukaże nam się:

Traceback (most recent call last):
  File "C:/Users/jaktestowac/.PyCharmCE2018.2/config/scratches/exception.py", line 5, in <module>
    result = a / b
TypeError: unsupported operand type(s) for /: 'int' and 'str'

W informacji na konsoli widzimy kolejny typ wyjątku – TypeError. Czy możemy się też przed nim zabezpieczyć? Ale przy jednoczesnym zachowaniu zabezpieczenia przed ZeroDivisionError?

Jasne! Omówimy to w kolejnych lekcjach ale najpierw czeka na Ciebie zadanie.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *