Python - pokročilé zpracování výjimek

Obsah
Jakmile je vyvolána výjimka, je naší povinností to zvládnout, tímto způsobem bude náš program schopen provést akci, vyvolat zprávu, požádat o opravu parametru zadaného uživatelem, zkrátka mnoho možností .
Chytání výjimek
Jak jsme již zmínili dříve, důležitou věcí, když vidíme výjimku, je, že ji můžeme zachytit tímto způsobem, můžeme se rozhodnout, co by program měl dělat, jakmile k této situaci dojde, abychom to udělali, použijeme příkazy zkuste / kromě. Abychom ukázali výše uvedené, budeme analyzovat velmi jednoduchý dělící program, protože víme, že číslo nelze dělit 0, takže to vyvolá výjimku.
Začněme vytvářet náš kód, pamatujte, že to můžeme udělat v libovolném textovém editoru a musíme soubor uložit s příponou .py, abychom jej mohli spustit na příkazovém řádku nebo konzole.
 x = vstup ('Zadejte první číslo:') y = zadejte ('Zadejte druhé číslo:') tisk x / y [ / velikost] [velikost = 4]

To bude fungovat docela dobře, dokud uživatel nezadá jako druhý argument hodnotu 0, což vyvolá výjimku, jak můžeme vidět na následujícím obrázku běhu tohoto programu:

Tomu můžeme zabránit použitím zkuste / kromě že jsme viděli na začátku této části, podívejme se na náš opravený kód:
 zkuste: x = vstup ('Zadejte první číslo:') y = zadejte ('Zadejte druhé číslo:') vytiskněte x / y kromě ZeroDivisionerror: print "Druhé číslo nemůže být nula!" 

Tento způsob řešení tohoto případu je celkem čistý, přes všechno by se také dalo říci, že jednoduchým -li to by podmiňovalo, že hodnota Y Nebylo by to 0, což by bylo adekvátní řešení, nicméně pokud bychom do našeho programu přidali více divizí, potřebovali bychom více podmíněností, místo toho tímto způsobem potřebujeme pouze jednoho obslužného programu možné výjimky, která je generována.
Chytit více než jednu výjimku
Pokračujeme příkladem rozdělení, na kterém jsme pracovali, podívejme se, co by se stalo, kdyby místo 0 zadáme něco jiného:

Na obrázku vidíme, že byl zadán text a náš obslužný program, který očekával pouze výjimku typu ZeroDivisionerror nemohl provést správné zacházení, protože nevěděl, co dělat s nově generovanou výjimkou.
Abychom zachytili novou výjimku, jednoduše přidáme nový blok až na aby bylo možné zvládnout výjimku Zadejte Chyba které je generováno vydělením čísla textem.
Podívejme se na náš opravený kód:
 zkuste: x = vstup ('Zadejte první číslo:') y = zadejte ('Zadejte druhé číslo:') vytiskněte x / y kromě ZeroDivisionerror: print "Druhé číslo nemůže být nula!" kromě TypeError: print "To nebylo číslo, že?" 

Pokud bychom se rozhodli použít podmíněné -li„Tento úkol by nám zabral mnohem více řádků kódu, kromě toho, že by byl náš program méně čitelný.
Chytání dvou výjimek ve stejném bloku
Pokud potřebujeme zachytit několik výjimek v jednom bloku až na musíme je přidat do deklarace v závorkách, podívejme se na kód, abychom to lépe pochopili:
[ / size] try: x = vstup ('Zadejte první číslo:') y = zadejte ('Zadejte druhé číslo:') vytiskněte x / y kromě ZeroDivisionerror: print "Druhé číslo nemůže být nula!" kromě TypeError: [/ size] [size = 4] print "To nebylo číslo, že?" 

Jak jsme mohli vidět, ať se stane cokoli, aplikace nám bude i nadále posílat stejnou zprávu, ať už zadáte 0 nebo zadáte něco jiného než číslo.Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave