Python Zpracování výjimek: zkuste, chyťte, nakonec a zvedněte [Příklad]
V čem je zpracování výjimek Python?
Výjimkou je chyba, ke které dojde v době provádění programu. Při spuštění programu však Python vygeneruje výjimku, která by měla být ošetřena, aby se zabránilo pádu vašeho programu. V Python jazyk, výjimky se spouštějí automaticky při chybách, nebo je může spustit a zachytit váš kód.
Výjimka označuje, že ačkoli k události může dojít, k tomuto typu události dochází zřídka. Když metoda není schopna zpracovat výjimku, je vyvolána její volající funkci. Nakonec, když je vyhozena výjimka z hlavní funkce, program je náhle ukončen.
Běžné příklady výjimek
- Dělení nulou
- Přístup k souboru, který neexistuje.
- Přidání dvou nekompatibilních typů
- Pokus o přístup k neexistujícímu indexu sekvence
- Odebrání tabulky z odpojeného databázového serveru.
- Výběr z bankomatu vyšší, než je dostupná částka
Proč byste měli používat výjimky?
Zde jsou důvody pro použití výjimek v Python:
- Zpracování výjimek umožňuje oddělit kód pro zpracování chyb od normálního kódu.
- Výjimkou je a Python objekt což představuje chybu.
- Stejně jako u komentářů ke kódu vám výjimky pomáhají připomenout si, co program očekává.
- Vyjasňuje kód a zlepšuje čitelnost.
- Umožňuje stimulovat důsledky, protože řešení chyb probíhá na jednom místě a jedním způsobem.
- Výjimkou je pohodlný způsob zpracování chybových zpráv.
- In Python, můžete v programu vyvolat výjimku pomocí metody zvýšení výjimky.
- Vyvolání výjimky vám pomůže přerušit aktuální provádění kódu a vrátí výjimku zpět do očekávání, dokud nebude zpracována.
- Zpracování výjimek pro komponenty, které je nemohou přímo zpracovat.
Pravidla výjimek
Zde jsou některá základní pravidla Python zpracování výjimek:
- Výjimky musí být objekty třídy
- Pro výjimky třídy můžete použít příkaz try s klauzulí výjimkou, která zmiňuje konkrétní třídu.
- I když je příkaz nebo výraz syntakticky správný, může při pokusu o jeho provedení zobrazit chybu.
- Chyby nalezené během provádění se nazývají výjimky a nejsou bezpodmínečně fatální.
Python Mechanismus zpracování výjimek
Zpracování výjimek je řízeno následujícími 5 klíčovými slovy:
- vyzkoušet
- úlovek
- Konečně
- hod
Python Zkuste Statement
Příkaz try obsahuje klíčové slovo try, za nímž následuje dvojtečka (:) a sada kódů, ve kterých se mohou vyskytnout výjimky. Má jednu nebo více klauzulí.
Pokud se během provádění příkazu try nevyskytly žádné výjimky, interpret ignoruje obsluhu výjimek pro tento konkrétní příkaz try.
V případě, že dojde k nějaké výjimce ve zkušební sadě, zkušební sada vyprší a řízení programu se přenese na odpovídající obslužnou rutinu kromě obsluhy následující za zkušební sadou.
Syntax: try: statement(s)
Prohlášení o úlovku
Bloky Catch berou vždy jeden argument, což je typ výjimky, kterou pravděpodobně zachytí. Tyto argumenty se mohou pohybovat od konkrétního typu výjimky, která se může lišit, až po univerzální kategorii výjimek.
Pravidla pro catch blok:
- Blok catch můžete definovat pomocí klíčového slova catch
- Parametr Catch Exception je vždy uzavřen v závorkách
- Vždy představuje typ výjimky, kterou blok catch zpracovává.
- Mezi dvěma {} složenými závorkami je zapsán kód zpracování výjimek.
- Do jednoho pokusného bloku můžete umístit více bloků catch.
- Blok catch můžete použít až po bloku try.
- Všechny bloky catch by měly být seřazeny od podtřídy do nadtřídy.
Příklad:
try
}
catch (ArrayIndexOutOfBoundsException e) {
System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {
System.err.printin("Caught second " + e.getMessage());
}
Konečně prohlášení v Python
Nakonec se blok vždy provede bez ohledu na to, zda byla nebo nebyla vyvolána výjimka. Poslední klíčové slovo umožňuje vytvořit blok kódu, který následuje po bloku try-catch.
Konečně, doložka je nepovinná. Je určen k definování akcí čištění, které by měly být provedeny za všech podmínek.
try:
raise KeyboardInterrupt
finally:
print 'welcome, world!'
Output
Welcome, world!
KeyboardInterrupt
Nakonec se před příkazem try provede klauzule.
Zvýšit prohlášení v Python
Příkaz raise specifikuje argument, který inicializuje objekt výjimky. Zde následuje čárka za názvem výjimky a argumentem nebo n-ticí argumentu, který následuje za čárkou.
Syntaxe:
raise [Exception [, args [, traceback]]]
V této syntaxi je argument volitelný a v době provádění je hodnota argumentu výjimky vždy žádná.
Příklad:
A Python výjimkou může být jakákoli hodnota, jako je řetězec, třída, číslo nebo objekt. Většina z těchto výjimek, které jsou vyvolány Python core jsou třídy s argumentem, který je instancí třídy.
důležitý Python chyby
| Typ chyby | Description |
|---|---|
| Aritmetická chyba | ArithmeticError funguje jako základní třída pro všechny aritmetické výjimky. Vyvolá se kvůli chybám v aritmetických operacích. |
| ImportError | ImportError se vyvolá, když se pokoušíte importovat modul, který se nenachází. K tomuto typu výjimky dochází, pokud jste provedli typing chyba v názvu modulu nebo modul, který není přítomen ve standardní cestě. |
| Chyba indexu | Při pokusu o odkaz na sekvenci, která je mimo rozsah, se objevila chyba IndexEroris. |
| KeyError | Když konkrétní klíč není ve slovníku nalezen, je vyvolána výjimka KeyError. |
| NameError | Chyba NameError je vyvolána, když je na jméno odkazováno v kódu, který nikdy neexistuje v místním nebo globálním oboru názvů. |
| ValueError | Chyba hodnoty je vyvolána, když funkce nebo vestavěná operace obdrží argument, který může být správného typu, ale nemá vhodnou hodnotu. |
| EOFchyba | Tento druh chyby se objeví, když jedna z vestavěných funkcí (input() nebo raw_input()) dosáhne podmínky EOF bez čtení jakýchkoli dat. |
| ZeroDivisonError | Tento typ chyby se objeví, když dojde k dělení nebo modulu nulou pro všechny číselné typy. |
| IOError- | Tento druh chyby se objevil, když selže vstupní/výstupní operace. |
| chyba syntaxe | SyntaxErrors vyvolány, když dojde k chybě v Python syntax. |
| IndentationError | Tato chyba se objevila, když odsazení není správně definováno |
Ostatní Důležité Python b) Výjimky
| Výjimka | Description |
|---|---|
| Aritmetická výjimka | Aritmetická chyba, jako je dělení nulou. |
| Výjimka ArraylndexOutOfBounds | Index pole je mimo rozsah. |
| Výjimka ArrayStore | Přiřazení vám pomůže k prvku pole nekompatibilního typu. |
| ClassCastException | Neplatné obsazení |
| Výjimka MlegalMonitorState | Nelegální operace monitoru, jako je čekání na odemčené vlákno. |
| MlegalStateException | Prostředí nebo aplikace je ve špatném stavu. |
| ClassNotFoundException | Třída nenalezena. |
| CloneNotSupportedException | Pokus o klonování objektu, který neimplementuje rozhraní Cloneable. |
| Výjimka z nelegálního přístupu | Přístup do třídy je odepřen. |
| InstantiationException | Dochází k tomu, když se pokusíte vytvořit objekt rozhraní nebo abstractřída t. |
| CloneNotSupportedException | Pokus o klonování objektu, který neimplementuje rozhraní. |
Chyba vs. výjimky
| Chyba | b) Výjimky |
|---|---|
| Všechny chyby v Python jsou nezaškrtnutým typem. | Mezi výjimky patří zaškrtnutý i nezaškrtnutý typ. |
| Za běhu dochází k chybám, které kompilátor nezná. | Výjimky lze obnovit jejich zpracováním pomocí bloků try-catch. |
| Chyby jsou většinou způsobeny prostředím, ve kterém aplikace běží. | Samotná aplikace způsobuje výjimky. |
| Příklady: Chyba nedostatku paměti |
Příklady: Zaškrtnuté výjimky, výjimka SQL, výjimka NullPointerException atd. |
Shrnutí
- Výjimkou je chyba, ke které došlo během provádění programu.
- Výjimka označuje, že ačkoli k události může dojít, k tomuto typu události dochází zřídka.
- Běžné příklady výjimek jsou 1) Dělení nulou, 2) Přístup k neexistujícímu souboru, 3) Přidání dvou nekompatibilních typů.
- Výjimkou je a Python objekt, který představuje chybu.
- Příkaz try obsahuje klíčové slovo try, za nímž následuje dvojtečka (:) a sada kódů, ve kterých se mohou vyskytnout výjimky. Má jednu nebo více klauzulí.
- Bloky Catch berou vždy jeden argument, což je typ výjimky, kterou pravděpodobně zachytí.
- Příkaz raise specifikuje argument, který inicializuje objekt výjimky.
- Nakonec se blok vždy provede bez ohledu na to, zda je výjimka vyvolána nebo ne.
