Kaj je izjema v Pythonu?
Izjema je napaka, ki se zgodi v času izvajanja programa. Vendar pa Python med izvajanjem programa ustvari izjemo, ki jo je treba obravnavati, da prepreči, da bi se vaš program zrušil. V jeziku Python se izjeme samodejno sprožijo pri napakah ali pa jih lahko sproži in prestreže vaša koda.
Izjema kaže, da čeprav se dogodek lahko zgodi, se ta vrsta dogodka zgodi redko. Ko metoda ne more obvladati izjeme, se vrne na funkcijo klicatelja. Sčasoma se program, ko izvleče izjema iz glavne funkcije, nenadoma zaključi.
V tej vadnici Python za izjemno ravnanje boste izvedeli:
- Kaj je izjema v Pythonu?
- Pogosti primeri izjem
- Zakaj bi morali uporabljati izjeme?
- Pravila izjem
- Izjemen mehanizem ravnanja
- Izjava o poskusu
- Izjava o ulovu
- Izjava o dvigu
- Pomembne napake Pythona
- Druge pomembne izjeme Pythona
- Napaka v primerjavi z izjemami
Pogosti primeri izjem:
- Delitev z ničlo
- Dostop do datoteke, ki ne obstaja.
- Dodatek dveh nezdružljivih vrst
- Poskus dostopa do neobstoječega indeksa zaporedja
- Odstranjevanje tabele iz nepovezanega strežnika baze podatkov.
- Dvig na ATM več kot je na voljo
Zakaj bi morali uporabljati izjeme?
Tu so razlogi za uporabo izjem v Pythonu:
- Obravnava izjem omogoča ločevanje kode za obdelavo napak od običajne kode.
- Izjema je objekt Python, ki predstavlja napako.
- Tako kot pri komentarjih kode tudi pri izjemah tudi sami opozarjate, kaj program pričakuje.
- Pojasnjuje kodo in izboljšuje berljivost.
- Omogoča spodbujanje posledic, saj odpravljanje napak poteka na enem mestu in na en način.
- Izjema je priročen način za obdelavo sporočil o napakah.
- V Pythonu lahko v programu sprožite izjemo z uporabo metode dviganja izjem.
- Zvišanje izjeme vam pomaga prekiniti trenutno izvajanje kode in vrne izjemo nazaj v pričakovanje, dokler ni obdelana.
- Obdelava izjem za komponente, ki jih ne morejo neposredno obdelati.
Pravila izjem
Tu je nekaj bistvenih pravil ravnanja z izjemo Pythona:
- Izjeme morajo biti predmeti razreda
- Za izjeme razredov lahko uporabite stavek try s stavkom, ki omenja določen razred.
- Tudi če stavek ali izraz sintaksično pravilen, lahko pri poskusu njegove izvedbe prikaže napako.
- Napake, ugotovljene med izvajanjem, se imenujejo izjeme in niso brezpogojno usodne.
Izjemen mehanizem ravnanja
Obdelavo izjem upravlja naslednjih 5 ključnih besed:
- poskusite
- ulov
- končno
- vrgel
Izjava o poskusu
Stavek try vključuje ključno besedo try, čemur sledi dvopičje (:) in nabor kode, v kateri lahko pride do izjem. Ima eno ali več klavzul.
Če med izvajanjem stavka try, če takrat ni prišlo do izjem, tolmač prezre ravnatelje z izjemami za to posebno izjavo try.
Če pride do kakršne koli izjeme v poskusnem paketu, preizkusni paket poteče in nadzor programa se prenese na ujemajoči se, razen obdelovalca, ki sledi poskusnemu paketu.
Syntax:try:statement(s)
Izjava o ulovu
Bloki ulova zajemajo en argument naenkrat, kar je vrsta izjeme, ki jo bo verjetno ujel. Ti argumenti se lahko gibljejo od določene vrste izjeme, ki jo je mogoče spreminjati, do vseobsegajoče kategorije izjem.
Pravila za blok ulova:
- Blok catch lahko definirate z uporabo ključne besede catch
- Parameter Catch Exception je vedno zaprt v oklepajih
- Vedno predstavlja vrsto izjeme, ki ujame ročice blokov.
- Koda za ravnanje z izjemami je zapisana med dvema {} zavitima oklepajema.
- V en poskusni blok lahko postavite več blokov catch.
- Blok catch lahko uporabite šele po bloku try.
- Vse bloke catch je treba razvrstiti od izjeme za podrazred do superrazreda.
Primer:
try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}
Končno Block
Končno se blok vedno izvede ne glede na to, ali je izjema vržena ali ne. Končna ključna beseda vam omogoča, da ustvarite blok kode, ki sledi bloku try-catch.
Končno, klavzula ni obvezna. Namenjen je opredelitvi čiščenja, ki naj se izvaja v vseh pogojih.
try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt
Končno se klavzula izvrši pred stavkom try.
Izjava o dvigu
Stavek rise določa argument, ki inicializira objekt izjeme. Tu vejica sledi imenu izjeme in argument ali sklop argumenta, ki sledi vejici.
Sintaksa:
raise [Exception [, args [, traceback]]]
V tej sintaksi je argument neobvezen in med izvajanjem vrednost argumenta izjeme vedno ni.
Primer:
Izjema Pythona je lahko katera koli vrednost, kot je niz, razred, številka ali predmet. Večina teh izjem, ki jih sproži jedro Python, so razredi z argumentom, ki je primerek razreda.
Pomembne napake Pythona
Vrsta napake | Opis |
ArithmeticError | ArithmeticError deluje kot osnovni razred za vse aritmetične izjeme. Poviša se za napake v računskih operacijah. |
ImportError | Napaka ImportError se pojavi, ko poskušate uvoziti modul, ki ni prisoten. Tovrstna izjema se zgodi, če ste storili napako pri tipkanju imena modula ali modula, ki ni prisoten v standardni poti. |
IndexError | IndexErroris se sproži, ko poskušate napotiti zaporedje, ki je izven dosega. |
KeyError | Če določenega ključa v slovarju ni mogoče najti, se sproži izjema KeyError. |
NameError | NameError se pojavi, ko je ime navedeno v kodi, ki nikoli ne obstaja v lokalnem ali globalnem imenskem prostoru. |
ValueError | Napaka vrednosti se pojavi, ko funkcija ali vgrajena operacija prejme argument, ki je lahko pravilnega tipa, vendar nima ustrezne vrednosti. |
EOFerror | Tovrstna napaka se pojavi, ko ena od vgrajenih funkcij (input () ali raw_input ()) doseže stanje EOF, ne da bi prebrala podatke. |
ZeroDivisonError | Ta vrsta napake se pojavi pri deljenju ali modulu z ničlo pri vseh številskih vrstah. |
IOError- | Ta vrsta napake se pojavi, ko vhodno / izhodna operacija ne uspe. |
syntaxError | Sintaksa Napake, ki se pojavijo, ko pride do napake v sintaksi Python. |
Napaka zamika | Ta napaka se pojavi, ko zamik ni pravilno definiran |
Druge pomembne izjeme Pythona
Izjema | Opis |
ArithmeticException | Aritmetična napaka, na primer deljenje z ničlo. |
ArraylndexOutOfBoundsException | Indeks matrike je zunaj meja. |
ArrayStoreException | Dodelitev vam pomaga do elementa polja nezdružljive vrste. |
ClassCastException | Neveljavna igralska zasedba |
MlegalMonitorStateException | Nezakonito delovanje monitorja, na primer čakanje na odklenjeno nit. |
MlegalStateException | Okolje ali aplikacija je v napačnem stanju. |
ClassNotFoundException | Predavanja ni mogoče najti. |
CloneNotSupportedException | Poskus kloniranja predmeta, ki ne izvaja vmesnika Cloneable. |
Nezakonita AccessException | Dostop do predavanja je zavrnjen. |
InstantiationException | Pojavi se, ko poskušate ustvariti predmet vmesnika ali abstraktnega razreda. |
CloneNotSupportedException | Poskus kloniranja predmeta, ki ne izvaja vmesnika. |
Napaka v primerjavi z izjemami
Napaka | Izjeme |
Vse napake v Pythonu niso označene. | Izjeme vključujejo tako preverjen kot tudi nepreverjen tip. |
Napake se pojavijo v času izvajanja, ki ga prevajalnik ne pozna. | Izjeme je mogoče obnoviti tako, da jih obdelate s pomočjo poskusnih blokov. |
Napake so večinoma posledica okolja, v katerem se izvaja aplikacija. | Aplikacija sama povzroča izjeme. |
Primeri: OutofMemoryError | Primeri: preverjene izjeme, izjema SQL, NullPointerException itd. |
Povzetek
- Izjema je napaka, ki se je zgodila med izvajanjem programa.
- Izjema kaže, da čeprav se dogodek lahko zgodi, se ta vrsta dogodka zgodi redko.
- Pogosti primeri izjem so 1) delitev z ničlo, 2) dostop do datoteke, ki ne obstaja, 3) dodajanje dveh nezdružljivih vrst.
- Izjema je objekt Python, ki predstavlja napako.
- Stavek try vključuje ključno besedo try, čemur sledi dvopičje (:) in nabor kode, v kateri lahko pride do izjem. Ima eno ali več klavzul.
- Bloki ulova zajemajo en argument naenkrat, kar je vrsta izjeme, ki jo bo verjetno ujel.
- Stavek rise določa argument, ki inicializira objekt izjeme.
- Nazadnje, blok se vedno izvrši ne glede na vrženo izjemo ali ne.