Obravnavanje izjem Python: Poskusite, ulovite, končno

Kazalo:

Anonim

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:

  1. poskusite
  2. ulov
  3. končno
  4. 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.