Łapanie konkretnych wyjątków

Gdy b = 0 to wystąpi 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. Ale 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.

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! Przejdź do następnej lekcji, aby zobaczyć jak to zrobić.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *