Přejít na hlavní obsah

Klávesnice Mac OS ve Vmware: funkce a nastavení

Během procesu vývoje programů v jazyce Python se někdy setkáváme s chybami, které mohou zastavit provádění programu. Pro zpracování takových situací se v jazyce Python používají výjimky.

Výjimkou je objekt, který je v případě chyby "vyhozen". V Pythonu nám výjimky pomáhají pochopit, co se během provádění programu pokazilo, a poskytnout informace o chybě.

Python poskytuje mnoho vestavěných výjimek, které lze použít ke zpracování různých typů chyb. Když dojde k vyloučení, softwarový kód může přejít do speciální jednotky (nazývané obslužná rutina výjimek) a provést tam potřebné kroky.

Kromě toho je při zpracování výjimek důležité mít možnost sledovat přesnou sekvenci hovorů funkcí, než dojde k chybě. K tomu se používá trasování - proces výstupu zásobníku hovorů-seznam funkcí, které byly vyvolány během provádění programu.

V tomto článku se podíváme na to, jak v Pythonu vytvářet chyby a zásobníky hovorů a jak tyto informace používat k efektivnějšímu ladění a vývoji programů.

Výstup chyb a zásobník hovorů v Pythonu

Při vytváření programů v Pythonu často dochází k chybám. Když dojde k chybě v kódu, Python vygeneruje výjimku, která obsahuje informace o chybě, ke které došlo, a trasování zásobníku hovorů.

Informace o chybě mohou být velmi užitečné při ladění programu. Umožňuje určit, kde přesně k chybě došlo a jaké hovory funkcí vedly k jejímu vzniku.

Python odesílá informace o chybě do standardního výstupního toku. Ve výchozím nastavení je to konzole, ale informace lze také přesměrovat do souboru nebo jiného výstupu.

Informace o chybě se obvykle skládají ze dvou částí: chybové zprávy a trasování zásobníku hovorů.

Chybová zpráva je součástí výjimky a obvykle obsahuje popis chyby a další informace, které mohou pomoci pochopit příčiny chyby.

Trasování zásobníku hovorů je posloupnost hovorů funkcí, počínaje místem, kde se chyba stala, až po místo, kde byla výjimka zpracována nebo program skončil.

Pro výstup chyb je zdrojem výjimka, která v programu vznikla. V Pythonu lze výjimku vygenerovat pomocí příkazu raise nebo ji lze vygenerovat automaticky, když dojde k chybě provádění programu.

Chyby mohou být v Pythonu různých typů a každý typ může zobrazovat informace o chybě jinak. Například výjimka TypeError bude obsahovat informace o tom, jaké typy argumentů byly do funkce převedeny, a výjimka IndexError bude obsahovat informace o tom, který index byl nesprávný.

Ve výchozím nastavení Python zobrazí pouze chybovou zprávu, ale pro úplné informace o vzniklé chybě lze použít funkci traceback.print_exc () modulu traceback . Zobrazí chybovou zprávu a plný zásobník hovorů.

Existují také další způsoby zpracování a vyvádění chyb, například je možné využít operátora try / except k zachycení a zpracování výjimek. To umožňuje sledovat chování programu, když dojde k chybě, a vytvářet vyloučení a trasování zásobníku hovorů, jak uznáte za vhodné.

Výstup chyb a zásobníku hovorů v Pythonu je důležitým nástrojem při ladění programů. Pomáhá rychle identifikovat místo a příčiny chyby, což usnadňuje jejich opravu a zlepšuje kvalitu softwarového kódu.

Výjimky: základní pojmy

Výjimka obsahuje informace o chybě, jako je její typ a textová zpráva. Chyby se mohou objevit při různých operacích, jako je dělení nulou, odkaz na neexistující soubor nebo nesprávná data.

Python má mnoho vestavěných výjimek, z nichž každá odpovídá určitému typu chyby. Například vyloučení ZeroDivisionError nastává, když je děleno nulou, vyloučení ValueError - při pokusu převést nesprávná data na jiný typ.

Pro zpracování výjimky v programu je nutné použít konstrukci try-except. Blok try obsahuje kód, ve kterém může dojít k vyloučení. Except blok určuje, jak zpracovat výjimku, pokud k ní dojde.

V bloku except lze zadat několik oddílů pro zpracování různých typů výjimek. Lze také použít konstrukci finally, která provádí kód bez ohledu na to, zda došlo k vyloučení nebo ne.

Pokud dojde k vyloučení, program přejde na nejbližšího zpracovatele výjimek. Pokud obslužná rutina není nalezena, program ukončí své provádění a zobrazí informace o chybě.

Výstup informací o vyloučení a zásobníku hovorů lze provést pomocí návrhu try-except s blokem except bez udání typu výjimky. V takovém případě se zobrazí informace o chybě a zásobníku hovorů.

Použití výjimek umožňuje vytvářet spolehlivější a odolnější programy, zpracovávat chyby, které se objeví, a upozorňovat na ně uživatele.

Typy výjimek v Pythonu

V Pythonu existuje mnoho typů výjimek, které mohou nastat při provádění programu. Znalost těchto typů vám pomůže pochopit, jaké chyby mohou nastat a jak s nimi pracovat.

  • Exception je základní třída pro všechny výjimky v Pythonu. Všechny výjimky jsou jeho potomky.
  • SyntaxError-vzniká při syntaktické chybě v kódu.
  • TypeError-nastává, když je operace aplikována na objekt nesprávného typu.
  • ValueError-nastává, když funkce získá správný typ argumentu, ale s nesprávnou hodnotou.
  • IndexError-nastává, když je index pole mimo povolený rozsah.
  • KeyError-vzniká, když ve slovníku není uvedený klíč.
  • FileNotFoundError-nastane, když soubor není nalezen.
  • ZeroDivisionError-nastává, když dojde k dělení nulou.
  • ImportError-nastává, když nelze importovat modul nebo balíček.
  • AttributeError-nastává, když objekt nemá daný atribut.

Kromě toho je možné vytvořit si vlastní výjimky, které se dědí ze třídy Exception .

Pokud dojde k vyloučení v Pythonu, můžete k jeho zpracování použít blok try-except. Try blok obsahuje kód, který může způsobit výjimku, a except blok určuje, jak tuto výjimku zvládnout. V bloku except je uveden typ výjimky, kterou je třeba zpracovat.

Pokud například chcete zpracovat výjimku FileNotFoundError , můžete takový kód napsat:

try:file = open("myfile.txt", "r")except FileNotFoundError:print("Файл не найден")

Tento kód se pokusí otevřít soubor s názvem " myfile.txt". Pokud soubor není nalezen, zobrazí se zpráva "Soubor nebyl nalezen".

Zpracování výjimek

V Pythonu lze výjimky zpracovat pomocí návrhu try-except. To umožňuje zpracovat chyby, ke kterým dochází během provádění programu, a poskytnout uživateli informace o chybě, která se stala.

Vazba try-except skládá se ze dvou bloků. Blok try obsahuje kód, který může způsobit výjimku. Blok except obsahuje kód, který bude proveden, pokud bude výjimka vznesena.

try:# Код, который может вызвать исключениеresult = 10 / 0except ZeroDivisionError:# Код, который будет выполнен при возникновении исключения ZeroDivisionErrorprint("Деление на ноль недопустимо!")

V tomto příkladu se snažíme provést dělení nulou. Pokud se tak stane, dojde k vyloučení ZeroDivisionError a blok except zachytí jej tím, že uživateli sdělí, že dělení nulou je nepřípustné.

Můžete zadat několik bloků except pro zpracování různých výjimek:

try:# Код, который может вызвать исключениеresult = int("abc")except ZeroDivisionError:# Код, который будет выполнен при возникновении исключения ZeroDivisionErrorprint("Деление на ноль недопустимо!")except ValueError:# Код, который будет выполнен при возникновении исключения ValueErrorprint("Неверный формат числа!")

V tomto příkladu jsme se pokusili převést řetězec na číslo pomocí funkce int(). Pokud má řetězec nesprávný formát (například obsahuje písmena místo číslic), je vzrušena výjimka ValueError a blok except zachytí jej zobrazením zprávy uživateli o nesprávném formátu čísla.

Pokud v bloku try existuje výjimka, která nebyla uvedena v bloku except, tato výjimka není zpracována a zobrazí se chybová zpráva ve výchozím nastavení.

Lze také přidat blok finally, který bude v každém případě proveden, i když dojde nebo nedojde k výjimkám:

try:# Код, который может вызвать исключениеresult = int("abc")except ValueError:# Код, который будет выполнен при возникновении исключения ValueErrorprint("Неверный формат числа!")finally:# Код, который будет выполняться в любом случаеprint("Конец программы")

V tomto případě dojde k vyloučení ValueError zobrazí se odpovídající zpráva a poté bude proveden blok finally zpráva o ukončení programu.

Operátoři try-except

V programovacím jazyce Python se příkazy try-except používají ke zpracování výjimek, ke kterým dochází během provádění programu. Blok try obsahuje kód, který může způsobit výjimku, a blok except určuje, jak přesně tuto výjimku zvládnout.

Operátor try-except má následující syntaxi:

try:# Код, который может вызвать исключениеexcept Имя_исключения1:# Код для обработки Имя_исключения1except Имя_исключения2 as переменная:# Код для обработки Имя_исключения2 и доступ к переменной

Když blok try způsobí výjimku, softwarový kód přejde do jednotky except, která odpovídá této výjimce. Pokud výjimka vyvolaná v bloku try odpovídá výjimce uvedené v bloku except, provede se kód v tomto bloku. Pokud se výjimka neshoduje s žádnou z výjimek v blokech except, bude výjimka převedena dále na výzvu zásobníku.

V bloku except lze specifikovat několik výjimek oddělením čárkami. Příkazy finally a else lze také použít k provádění určitých akcí po bloku try nebo po bloku except.

Příklad použití operátorů try-except:

try:x = 10 / 0except ZeroDivisionError:print("Ошибка деления на ноль")except Exception as e:print("Произошла ошибка:", e)

V tomto příkladu kód v bloku try způsobí vyloučení ZeroDivisionError, protože dojde k dělení nulou. Jednotka except s názvem ZeroDivisionError zpracovává tuto výjimku a zobrazí zprávu "Chyba dělení na nulu". Pokud by došlo k nějaké jiné výjimce, byl by zpracován blokem except s názvem Exception.