„Python“ išimčių tvarkymas: pabandykite, gaudykite, galiausiai

Turinys:

Anonim

Kas yra „Python“ išimtis?

Išimtis yra klaida, įvykusi programos vykdymo metu. Tačiau, vykdydamas programą, „Python“ sukuria išimtį, kurią reikėtų tvarkyti, kad programa nesugestų. „Python“ kalba išimtys suveikia automatiškai dėl klaidų, arba jas gali suaktyvinti ir perimti jūsų kodas.

Išimtis rodo, kad nors įvykis ir gali įvykti, tokio tipo įvykiai vyksta retai. Kai metodas negali apdoroti išimties, jis perduodamas skambinančiojo funkcijai. Galiausiai, kai išimtis išmetama iš pagrindinės funkcijos, programa staiga nutraukiama.

Šioje „Python“ išskirtinio valdymo pamokoje sužinosite:

  • Kas yra „Python“ išimtis?
  • Dažni išimčių pavyzdžiai
  • Kodėl turėtumėte naudoti išimtis?
  • Išimčių taisyklės
  • Išskirtinis tvarkymo mechanizmas
    • Išbandykite pareiškimą
    • Sugavimo pareiškimas
    • „Pakelkite pareiškimą“
  • Svarbios „Python“ klaidos
  • Kitos svarbios „Python“ išimtys
  • Klaida ir išimtys

Dažni išimčių pavyzdžiai:

  • Dalyba iš nulio
  • Prieiga prie neegzistuojančio failo.
  • Dviejų nesuderinamų tipų pridėjimas
  • Bandoma pasiekti neegzistuojantį sekos indeksą
  • Lentelės pašalinimas iš atjungto duomenų bazės serverio.
  • Bankomato išėmimas didesnis nei galima suma

Kodėl turėtumėte naudoti išimtis?

Čia pateikiamos išimčių naudojimo „Python“ priežastys:

  • Išimčių tvarkymas leidžia atskirti klaidų tvarkymo kodą nuo įprasto.
  • Išimtis yra „Python“ objektas, nurodantis klaidą.
  • Kaip ir kodo komentarų atveju, išimtys padeda jums priminti, ko tikisi programa.
  • Tai paaiškina kodą ir pagerina įskaitomumą.
  • Leidžia skatinti pasekmes, nes klaidų tvarkymas vyksta vienoje vietoje ir vienu būdu.
  • Išimtis yra patogus klaidų pranešimų tvarkymo būdas.
  • „Python“ programoje galite išimti išimtį naudodami pakėlimo išimties metodą.
  • Išimties padidinimas padeda sulaužyti dabartinį kodo vykdymą ir grąžina išimtį į laukimą, kol ji bus tvarkoma.
  • Apdorojami komponentų, kurie negali tiesiogiai jų valdyti, išimtys.

Išimčių taisyklės

Štai keletas pagrindinių „Python“ išimčių tvarkymo taisyklių:

  • Išimtys turi būti klasės objektai
  • Klasės išimtims galite naudoti bandomąjį teiginį su išimties sakiniu, kuriame minima konkreti klasė.
  • Net jei teiginys ar išraiška yra sintaksiniu požiūriu teisingi, bandant jį įvykdyti gali pasirodyti klaida.
  • Vykdymo metu rastos klaidos vadinamos išimtimis ir nėra besąlygiškai mirtinos.

Išskirtinis tvarkymo mechanizmas

Išimčių tvarkymą tvarko šie 5 raktiniai žodžiai:

  1. bandyti
  2. pagauti
  3. pagaliau
  4. mesti

Išbandykite pareiškimą

Į bandymo pareiškimą įeina raktinio žodžio bandymas, po kurio yra dvitaškis (:) ir kodo rinkinys, kuriame gali būti išimčių. Jame yra vienas ar keli punktai.

Vykdant bandomąjį teiginį, jei tada nebuvo jokių išimčių, vertėjas ignoruoja to konkretaus bandymo teiginio išimčių tvarkytuvus.

Jei bandymo rinkinyje pasitaiko kokių nors išimčių, bandomasis rinkinys baigia galioti ir programos valdymas pereina prie atitikimo, išskyrus tvarkytoją, kuris seka bandymo rinkinį.

Syntax:try:statement(s)

Sugavimo pareiškimas

Sugavimo blokai reikalauja po vieną argumentą, o tai yra išimtis, kurią jis greičiausiai sulaiko. Šie argumentai gali svyruoti nuo tam tikros rūšies išimčių, kurias galima keisti, iki visuotinės išimčių kategorijos.

Sugavimo bloko taisyklės:

  • Galite nustatyti sugavimo bloką naudodami raktinį žodį gaudyti
  • Sugavimo išimties parametras visada yra skliausteliuose
  • Jis visada reiškia išimties tipą, kurį valdo blokavimo blokai.
  • Išimčių tvarkymo kodas parašytas tarp dviejų {} garbanotų petnešų.
  • Viename bandymo bloke galite įdėti kelis sugavimo blokus.
  • Gaudymo bloką galite naudoti tik po bandymo bloko.
  • Visi sugavimo blokai turėtų būti išdėstyti nuo poklasio iki superklasės išimties.

Pavyzdys:

try}catch (ArrayIndexOutOfBoundsException e) {System.err.printin("Caught first " + e.getMessage()); } catch (IOException e) {System.err.printin("Caught second " + e.getMessage());}

Pagaliau užblokuokite

Galiausiai blokavimas visada vykdomas, neatsižvelgiant į išmetamą išimtį ar ne. Galutinis raktinis žodis leidžia jums sukurti kodo bloką, kuris atitiktų bandymo sugauti bloką.

Galiausiai sąlyga yra neprivaloma. Jis skirtas apibrėžti valymo veiksmus, kurie turėtų būti atliekami visomis sąlygomis.

try:raise KeyboardInterruptfinally:print 'welcome, world!'OutputWelcome, world!KeyboardInterrupt

Galiausiai, sąlyga vykdoma prieš bandant pareiškimą.

„Pakelkite pareiškimą“

Pakėlimo sakinyje nurodomas argumentas, kuris inicijuoja išimties objektą. Čia kablelis yra po išimties pavadinimo ir po kablelio esančio argumento arba argumento.

Sintaksė:

raise [Exception [, args [, traceback]]]

Šioje sintaksėje argumentas yra neprivalomas, o vykdymo metu argumento išimtis reikšmė visada nėra.

Pavyzdys:

„Python“ išimtis gali būti bet kokia reikšmė, pvz., Eilutė, klasė, skaičius ar objektas. Dauguma šių „Python core“ iškeltų išimčių yra klasės su argumentu, kuris yra klasės egzempliorius.

Svarbios „Python“ klaidos

Klaidos tipas apibūdinimas
Aritmetinė klaida „ArithmeticError“ veikia kaip pagrindinė visų aritmetinių išimčių klasė. Jis keliamas dėl aritmetinių operacijų klaidų.
ImportError ImportError iškyla, kai bandote importuoti modulį, kurio nėra. Tokia išimtis įvyksta, jei padarėte klaidą modulio pavadinime arba modulio, kurio nėra standartiniame kelyje.
„IndexError“ „IndexErroris“ iškilo, kai bandote nurodyti seką, kuri yra už diapazono ribų.
„KeyError“ Kai konkretaus rakto nerandama žodyne, iškyla „KeyError“ išimtis.
VardasKlaida „NameError“ iškyla, kai pavadinime nurodomas kodas, kurio niekada nėra vietinėje ar pasaulinėje vardų srityje.
„ValueError“ Reikšmės klaida iškyla, kai funkcija ar įmontuota operacija gauna argumentą, kuris gali būti teisingo tipo, bet neturi tinkamos vertės.
EOFerror Tokia klaida kyla, kai viena iš integruotų funkcijų (input () arba raw_input ()) pasiekia EOF sąlygą, neskaitant jokių duomenų.
„ZeroDivisonError“ Šio tipo klaida iškyla, kai padalijimas arba modulis pagal nulį įvyksta visiems skaitiniams tipams.
IOError- Tokia klaida iškyla, kai nepavyksta įvesties / išvesties operacija.
sintaksės klaida Klaidos iškilo, kai įvyko klaida „Python“ sintaksėje.
IndentationError Ši klaida iškilo, kai įtrauka nėra tinkamai apibrėžta

Kitos svarbios „Python“ išimtys

Išimtis apibūdinimas
Aritmetinė išimtis Aritmetinė paklaida, pvz., Padalinti iš nulio.
„ArraylndexOutOfBoundsException“ Masyvo indeksas yra už ribų.
„ArrayStoreException“ Priskyrimas padeda jums nesuderinto tipo masyvo elementą.
„ClassCastException“ Netinkamas dalyvių skaičius
„MlegalMonitorStateException“ Neteisėtas monitoriaus veikimas, pavyzdžiui, laukimas ant neužrakinto sriegio.
„MlegalStateException“ Aplinka ar programa yra netinkamos būklės.
„ClassNotFoundException“ Klasė nerasta.
CloneNotSupportedException Bandykite klonuoti objektą, kuris neįdiegia „Cloneable“ sąsajos.
Neteisėta prieiga išimtis Prieiga prie kurso uždrausta.
InstantiationException Atsiranda, kai bandote sukurti sąsajos ar abstrakčios klasės objektą.
CloneNotSupportedException Bandykite klonuoti objektą, kuris neįdiegia sąsajos.

Klaida ir išimtys

Klaida Išimtys
Visos „Python“ klaidos yra nepažymėtas tipas. Išimtys apima ir pažymėtą, ir nepažymėtą tipą.
Klaidos atsiranda vykdymo metu, kurios kompiliatoriui nežinomos. Išimtys gali būti atkurtos jas apdorojant bandymų gaudymo blokų pagalba.
Klaidas dažniausiai sukelia aplinka, kurioje veikia programa. Pati programa sukelia išimtis.
Pavyzdžiai: „OutofMemoryError“ Pavyzdžiai: patikrintos išimtys, SQL išimtis, NullPointerException ir kt.

Santrauka

  • Išimtis yra klaida, įvykusi vykdant programą.
  • Išimtis rodo, kad nors įvykis ir gali įvykti, tokio tipo įvykiai vyksta retai.
  • Dažni išimčių pavyzdžiai: 1) padalijimas iš nulio, 2) prieiga prie neegzistuojančio failo, 3) dviejų nesuderinamų tipų pridėjimas.
  • Išimtis yra „Python“ objektas, nurodantis klaidą.
  • Į bandymo pareiškimą įeina raktinio žodžio bandymas, po kurio yra dvitaškis (:) ir kodo rinkinys, kuriame gali būti išimčių. Jame yra vienas ar keli punktai.
  • Sugavimo blokai reikalauja po vieną argumentą, o tai yra išimtis, kurią jis greičiausiai sulaiko.
  • Pakėlimo sakinyje nurodomas argumentas, kuris inicijuoja išimties objektą.
  • Galiausiai, blokavimas visada vykdomas, neatsižvelgiant į išmetamą išimtį ar ne.