5. Wyjątki

  • W przypadku wykonania niedozwolonej operacji,

  • W sytuacjach gdy zasób jest dla nas niedostępny - np. niewystarczające uprawnienia / za mało pamięci itp.

5.1. Syntax Errors

>>> while True print('Hello world')
File "<stdin>", line 1
while True print('Hello world')
                ^
SyntaxError: invalid syntax

5.2. Key Errors

stolice = {"Francja": "Paryz", "Niemcy":"Berlin", "Polska":"Warszawa", "Czechy":"Praga"}
stolice["USA"]

KeyError: 'USA'

5.3. Attribute error

  • Gdy operacja niedostępna

"Hello Wordl".append('!')

5.4. Indentation Error

def testfunc():
print('Hello ;)')
 print('My name is:')

File "<ipython-input-4-9cd3c6fb52a1>", line 3
 print('My name is:')
 ^
IndentationError: unexpected indent

5.5. ModuleNotFoundError

import not_existing_module

ModuleNotFoundError: No module named 'not_existing_module'

Tablica hierarchi wyjątków w Python.

5.6. IndexError

uczestnicy = ['Kasia', 'Adam', 'Tomek']
uczestnicy[6]

IndexError: list index out of range

5.7. Obsługa wyjątków

for i in range(3, -3, -1):
 try:
     print('Próba dzielenia przez {}'.format(i))
     3 / i
 except ZeroDivisionError:
     print('Pomijam, nielegalna operajca !!!')

 finally:
     print('Koniec obsługi')
Próba dzielenia przez 3
Koniec obsługi
Próba dzielenia przez 2
Koniec obsługi
Próba dzielenia przez 1
Koniec obsługi
Próba dzielenia przez 0
Pomijam, nielegalna operajca !!!
Koniec obsługi
Próba dzielenia przez -1
Koniec obsługi
Próba dzielenia przez -2
Koniec obsługi

5.8. Podniesienie wyjątku

def generate_report(input_data, outputfile):
    raise NotImplementedError('Function development still in progress')

NotImplementedError: Function development still in progress

5.9. Zadania

5.9.1. Pierwsze

  • Masz listę uczestników

    • uczestnicy = [“Kasia”, “Adam”, “Tomek”]

  • Obsłuż sytację w której

    • Wydobywany jest elemnt z listy o indeksie 5

    • Nastąpi

Obsłuż wy