Košík je prázdný

Při programování v Pythonu, jako v každém jiném programovacím jazyce, se setkáváme s chybami a výjimkami. Tyto nežádoucí události mohou způsobit přerušení běhu programu, pokud nejsou správně ošetřeny. V tomto článku se dozvíte, jak efektivně spravovat chyby a výjimky v Pythonu, aby váš kód zůstal čistý, odolný a snadno udržovatelný.

Základy ošetření chyb

V Pythonu se k ošetření chyb a výjimek používá blok try a except. Kód, u kterého předpokládáme, že může vyvolat výjimku, umístíme do bloku try. Pokud dojde k vyvolání výjimky, běh programu nekončí, ale přesune se do bloku except, kde je možné výjimku zachytit a adekvátně na ni reagovat.

try:
    # Kód, který může vyvolat výjimku
    result = 10 / 0
except ZeroDivisionError:
    # Co se stane, pokud dojde k výjimce ZeroDivisionError
    print("Nelze dělit nulou!")

Specifikace více výjimek

Python umožňuje specifikovat více typů výjimek v jednom bloku except, což je užitečné, pokud chcete reagovat na různé výjimky stejným způsobem. Můžete také použít více bloků except pro různé typy výjimek, pokud potřebujete na každou reagovat jinak.

try:
    # Kód, který může vyvolat více typů výjimek
    ...
except (TypeError, ValueError):
    # Reakce na TypeError nebo ValueError
    ...
except ZeroDivisionError:
    # Specifická reakce na ZeroDivisionError
    ...

Použití else a finally

K bloku try a except můžete přidat také blok else, který se vykoná, pokud v bloku try nedošlo k vyvolání žádné výjimky. Blok finally slouží k provedení kódu, který se má vykonat vždy, ať už došlo k vyvolání výjimky nebo ne. To je užitečné například pro uvolnění externích zdrojů, jako jsou soubory nebo síťová připojení.

try:
    # Kód, který může vyvolat výjimku
    ...
except SomeException:
    # Ošetření výjimky
    ...
else:
    # Kód, který se vykoná, pokud nedošlo k výjimce
    ...
finally:
    # Kód, který se vykoná vždy
    ...

Vlastní výjimky

Pro specifičtější ošetření chyb můžete v Pythonu definovat vlastní výjimky. To se hodí, pokud standardní výjimky nedostačují vašim potřebám. Vlastní výjimky se definují odvozením od třídy Exception.

class MyCustomError(Exception):
    # Volitelně můžete přidat implementaci
    pass

try:
    # Kód, který vyvolá MyCustomError
    raise MyCustomError("Něco se pokazilo")
except MyCustomError as e:
    print(e)

Správné ošetření chyb a výjimek je klíčové pro vytváření robustních a odolných aplikací. Python nabízí flexibilní nástroje, jak s výjimkami pracovat, což vám umožní zachovat běh programu i v případě neočekávaných situací. Pravidelné používání bloků try, except, else, a finally, spolu s definováním vlastních výjimek, vám umožní psát kód, který je nejen odolnější vůči chybám, ale také lehčí na údržbu a čtení.