1. Syntax Errors (Chyby syntaxe):

  • Syntax errors se vyskytují, když Python narazí na neplatnou syntaxi v kódu.
  • Tyto chyby jsou detekovány již při parsování kódu, protože neodpovídá syntaxi jazyka Python.
>>> print("Hello, world!"
SyntaxError: unexpected EOF while parsing

2. Runtime Errors (Běhové chyby):

  • Runtime errors se vyskytují, když je kód syntakticky správný, ale obsahuje logickou chybu, která brání jeho vykonání.
  • Tyto chyby se objevují až při běhu programu.
>>> x = 10
>>> y = 0
>>> result = x / y
ZeroDivisionError: division by zero

3. Logické chyby:

  • Logické chyby jsou obtížnější na identifikaci, protože program s nimi stále funguje, ale ne tak, jak je zamýšleno.
  • Tyto chyby se vyskytují, když je algoritmus nesprávně navržen nebo implementován.
  • Pro jejich nalezení musíme použít testování a ladění (debugging)
def factorial(n):
    result = 1
    for i in range(1, n + 1):
        result *= i
    return result
 
print(factorial(5))  # Správný výstup: 120
print(factorial(-1))  # Logická chyba: Factorial of negative number

4. IndexError:

  • IndexError nastává, když se pokoušíte přistupovat k prvkům v seznamu, n-tici nebo řetězci pomocí indexu, který je mimo rozsah.
>>> my_list = [1, 2, 3]
>>> print(my_list[3])
IndexError: list index out of range

5. KeyError:

  • KeyError se objeví, když se pokusíte přistoupit k prvkům slovníku pomocí klíče, který ve slovníku neexistuje.
>>> my_dict = {'a': 1, 'b': 2}
>>> print(my_dict['c'])
KeyError: 'c'

6. AttributeError:

  • AttributeError nastává, když se pokusíte přistoupit k atributu objektu, který tento objekt neobsahuje.
>>> my_list = [1, 2, 3]
>>> print(my_list.append)
AttributeError: 'list' object has no attribute 'append'

7. NameError:

  • NameError se objeví, když se používá nedefinovaná proměnná.
>>> print(my_variable)
NameError: name 'my_variable' is not defined

8. TypeErrors:

  • TypeError nastává, když operace je provedena na objektu nepodporujícím danou operaci.
>>> x = "5"
>>> y = 2
>>> print(x + y)
TypeError: can only concatenate str (not "int") to str

9. KeyboardInterrupt:

  • KeyboardInterrupt se vyskytuje, když uživatel přeruší běh programu stiskem klávesy, obvykle Ctrl + C.
>>> while True:
...     pass
... 
KeyboardInterrupt

Hledání chyb:

  • Použití traceback: Python poskytuje traceback, který identifikuje umístění chyby a zásobník volání, což může pomoci při hledání chyb.

  • Debugging: Použití debuggeru jako pdb nebo využití vývojových prostředí s funkcemi pro ladění může usnadnit hledání chyb.

  • Logování: Přidání výstupů nebo logovacích zpráv do kódu může pomoci identifikovat místa, kde program nefunguje správně. (Jak někdo řekl u Janoštíka: Prostě to “vyprintíme”.)

Předchozí: Základy systému výjimek v jazyce Python Následující: Práce se soubory v jazyce Python Celý okruh: 3. Programovací jazyky a programování