Pro zachycení chyby lze také použít příkaz try-except. Ukažme si to na příkladu:
def read_int():
while True:
vysledek = input("Napis cislo: ")
try:
return int(vysledek)
except:
print("Spatny vstup, nejedna se o cislo!")
Funkce read_int má za úkol získat od uživatele celé číslo a vrátit ho. Uvnitř této funkce máme nekonečný cyklus, který načítá řetězec do proměnné vysledek. V cyklu je dále blok kódu uvozený příkazem try, který obsahuje pokyny k převedení vstupu na celé číslo pomocí int.
Pokud se podaří převedení vstupu na číslo bez problémů, program tento proces ukončí a vrátí zadané číslo.
Nicméně, pokud uživatel zadá neplatný vstup (například text místo čísla), vznikne výjimka ValueError. V takovém případě se provede blok except. V tomto bloku program vypíše chybové hlášení "To nebylo číslo!" a cyklus se znovu zeptá uživatele na vstup. Tím je zajištěno, že program bude pokračovat v čekání na platný vstup od uživatele, dokud jej nezadá.
V Pythonu existuje také příkaz raise, který slouží k vyvolání výjimky, pokud chceme program přerušit a signalizovat nějaký problém. Tento příkaz můžeme použít, když dojde k nečekané situaci, kterou program nemůže automaticky vyřešit. Například, pokud uživatel zadá neplatný vstup, můžeme použít raise ValueError("Chyba vstupu"), čímž program přerušíme a informujeme uživatele o chybě.
Za zmínku stojí ještě také blok finally. Finally se v Pythonu používá k tomu, že obsahuje kód, který je vždy vykonán, ať už došlo k výjimce nebo ne. Je ideální pro operace, které je potřeba provést bez ohledu na to, zda program skončí chybou nebo úspěšně, například pro uzavření souboru nebo uvolnění systémových zdrojů.