Python izņēmumu apstrāde: mēģiniet, noķert, visbeidzot

Satura rādītājs:

Anonim

Kas ir izņēmums Python?

Izņēmums ir kļūda, kas notiek programmas izpildes laikā. Tomēr, palaižot programmu, Python ģenerē izņēmumu, kas jārīkojas, lai izvairītos no programmas avārijas. Python valodā izņēmumi automātiski tiek aktivizēti kļūdu dēļ, vai arī tos var aktivizēt un pārtvert jūsu kods.

Izņēmums norāda, ka, lai arī notikums var notikt, šāda veida notikumi notiek reti. Ja metode nespēj apstrādāt izņēmumu, tā tiek izmantota tās zvanītāja funkcijai. Galu galā, kad izņēmums tiek izmests no galvenās funkcijas, programma tiek pēkšņi pārtraukta.

Šajā Python ārkārtas apstrādes apmācībā jūs uzzināsiet:

  • Kas ir izņēmums Python?
  • Parasti izņēmuma piemēri
  • Kāpēc jums vajadzētu izmantot izņēmumus?
  • Izņēmumu noteikumi
  • Ārkārtas apstrādes mehānisms
    • Izmēģiniet paziņojumu
    • Paziņojums par nozveju
    • Paziņojums par paaugstinājumu
  • Svarīgas Python kļūdas
  • Citi svarīgi Python izņēmumi
  • Kļūda pret izņēmumiem

Izplatības piemēri:

  • Dalījums pa nullēm
  • Piekļuve failam, kas neeksistē.
  • Divu nesaderīgu veidu pievienošana
  • Mēģina piekļūt neeksistējošam secības indeksam
  • Tabulas noņemšana no atvienotā datu bāzes servera.
  • Bankomāta izņemšana, kas pārsniedz pieejamo summu

Kāpēc jums vajadzētu izmantot izņēmumus?

Šeit ir iemesli, kāpēc Python izmanto izņēmumus:

  • Izņēmumu apstrāde ļauj atdalīt kļūdu apstrādes kodu no parastā koda.
  • Izņēmums ir Python objekts, kas apzīmē kļūdu.
  • Tāpat kā ar kodu komentāriem, arī izņēmumi palīdz jums atgādināt, ko programma sagaida.
  • Tas precizē kodu un uzlabo lasāmību.
  • Ļauj stimulēt sekas, jo kļūdu apstrāde notiek vienā vietā un vienā veidā.
  • Izņēmums ir ērta metode kļūdu ziņojumu apstrādei.
  • Programmā Python programmā var izvirzīt izņēmumu, izmantojot paaugstināšanas izņēmuma metodi.
  • Izņēmuma palielināšana palīdz izjaukt pašreizējo koda izpildi un atgriež izņēmumu atpakaļ, līdz tas tiek apstrādāts.
  • Apstrādā izņēmumus komponentiem, kuri tos nevar tieši apstrādāt.

Izņēmumu noteikumi

Šeit ir daži galvenie Python izņēmumu apstrādes noteikumi:

  • Izņēmumiem jābūt klases objektiem
  • Klases izņēmumiem varat izmantot izmēģinājuma paziņojumu ar klauzulu, kurā pieminēta konkrēta klase.
  • Pat ja paziņojums vai izteiciens ir sintaktiski pareizs, tajā var tikt parādīta kļūda, mēģinot to izpildīt.
  • Izpildes laikā atrastās kļūdas sauc par izņēmumiem, un tās nav bez ierunām letālas.

Ārkārtas apstrādes mehānisms

Izņēmumu apstrādi pārvalda šādi 5 atslēgvārdi:

  1. mēģiniet
  2. noķert
  3. beidzot
  4. mest

Izmēģiniet paziņojumu

Izmēģinājuma paziņojums ietver atslēgvārda mēģinājumu, kam seko kols (:) un kodu komplekts, kurā var būt izņēmumi. Tam ir viena vai vairākas klauzulas.

Izpildes laikā mēģinājuma paziņojums, ja tad nav neviena izņēmuma, tulks ignorē šī īpašā mēģinājuma paziņojuma izņēmumu apstrādātājus.

Gadījumā, ja mēģinājumu komplektā ir kāds izņēmums, izmēģinājuma komplekta derīguma termiņš beidzas un programmas vadība tiek pārsūtīta uz atbilstošo, izņemot apstrādātāju, kurš seko mēģinājumu komplektam.

Syntax:try:statement(s)

Paziņojums par nozveju

Uztveršanas blokos vienlaikus tiek izmantots viens arguments, kas ir izņēmuma veids, kuru tas, visticamāk, noķers. Šie argumenti var svārstīties no noteikta veida izņēmumiem, kurus var mainīt, līdz visu izņēmumu kategorijai.

Noteikumi nozvejas blokam:

  • Izmantojot atslēgvārdu nozveja, varat definēt nozvejas bloku
  • Nozvejas izņēmuma parametrs vienmēr ir iekavās
  • Tas vienmēr apzīmē izņēmuma veidu, ar kuru rīkojas bloķēšanas bloki.
  • Starp diviem {} cirtainiem stiprinājumiem ir ierakstīts izņēmumu apstrādes kods.
  • Vienā mēģinājuma blokā varat ievietot vairākus bloķēšanas blokus.
  • Nozvejas bloku var izmantot tikai pēc mēģinājuma bloķēšanas.
  • Viss bloķēšanas bloks ir jāpasūta no apakšklases līdz superklases izņēmumam.

Piemērs:

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

Visbeidzot Bloķēt

Visbeidzot, bloķēšana vienmēr tiek izpildīta neatkarīgi no izmestā izņēmuma vai nē. Pēdējais atslēgvārds ļauj izveidot koda bloku, kas seko mēģinājuma panākšanas blokam.

Visbeidzot, klauzula nav obligāta. Tas ir paredzēts, lai noteiktu tīrīšanas darbības, kuras jāveic visos apstākļos.

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

Visbeidzot, klauzula tiek izpildīta pirms mēģinājuma paziņojuma.

Paziņojums par paaugstinājumu

Izrādes paziņojums norāda argumentu, kas inicializē izņēmuma objektu. Šeit komats seko izņēmuma nosaukumam un argumentam vai argumentam, kas seko komatam.

Sintakse:

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

Šajā sintaksē arguments nav obligāts, un izpildes laikā izņēmuma argumenta vērtība vienmēr nav.

Piemērs:

Python izņēmums var būt jebkura vērtība, piemēram, virkne, klase, skaitlis vai objekts. Lielākā daļa šo izņēmumu, kurus izvirza Python core, ir klases ar argumentu, kas ir klases eksemplārs.

Svarīgas Python kļūdas

Kļūdas veids Apraksts
Aritmētiskā kļūda ArithmeticError darbojas kā bāzes klase visiem aritmētiskajiem izņēmumiem. Tas tiek izvirzīts kļūdām aritmētiskajās darbībās.
ImportError ImportError tiek parādīts, kad mēģināt importēt moduli, kas nepastāv. Šāda veida izņēmums rodas, ja esat pieļāvis kļūdu moduļa nosaukumā vai moduļā, kura nav standarta ceļā.
IndexError IndexErroris rodas, mēģinot norādīt secību, kas ir ārpus diapazona.
KeyError Ja vārdnīcā nav atrasta noteikta atslēga, tiek izcelts KeyError izņēmums.
NameError Nosaukuma kļūda tiek parādīta, ja uz kodu tiek norādīts nosaukums, kas nekad nepastāv vietējā vai globālajā nosaukumvietā.
ValueError Vērtības kļūda rodas, ja funkcija vai iebūvēta darbība saņem argumentu, kas var būt pareiza tipa, bet kam nav piemērotas vērtības.
EOFerror Šāda veida kļūda rodas, kad viena no iebūvētajām funkcijām (input () vai raw_input ()) sasniedz EOF nosacījumu, nelasot datus.
ZeroDivisonError Šāda veida kļūda rodas, kad visu skaitļu tipiem notiek dalīšana vai modulis ar nulli.
IOError- Šāda veida kļūda rodas, ja ievades / izvades darbība neizdodas.
sintakseError Kļūdas, kas radušās, ja Python sintaksē ir kļūda.
IndentationError Šī kļūda radās, ja atkāpe nav pareizi definēta

Citi svarīgi Python izņēmumi

Izņēmums Apraksts
Aritmētiskais izņēmums Aritmētiskā kļūda, piemēram, dalīt ar nulli.
ArraylndexOutOfBoundsException Masīva indekss ir ārpus robežas.
ArrayStoreException Piešķiršana palīdz jums izveidot nesaderīga tipa masīva elementu.
ClassCastException Nederīgs dalībnieku sastāvs
MlegalMonitorStateException Nelikumīga monitora darbība, piemēram, gaidīšana uz neaizslēgta pavediena.
MlegalStateException Vide vai lietojumprogramma ir nepareizā stāvoklī.
ClassNotFoundException Klase nav atrasta.
CloneNotSupportedException Mēģiniet klonēt objektu, kas neievieš Cloneable interfeisu.
Nelegāls piekļuves izņēmums Piekļuve kursam tiek liegta.
InstantiationException Rodas, mēģinot izveidot saskarnes vai abstraktas klases objektu.
CloneNotSupportedException Mēģinājums klonēt objektu, kas neievieš saskarni.

Kļūda pret izņēmumiem

Kļūda Izņēmumi
Visas Python kļūdas ir nepārbaudīts tips. Izņēmumi ietver gan atzīmēto, gan nepārbaudīto tipu.
Kļūdas rodas palaišanas laikā, kas kompilatoram nav zināms. Izņēmumus var atgūt, rīkojoties ar tiem, izmantojot mēģinājumus noķert.
Kļūdas galvenokārt izraisa vide, kurā darbojas lietojumprogramma. Lietojumprogramma pati par sevi rada izņēmumus.
Piemēri: OutofMemoryError Piemēri: pārbaudītie izņēmumi, SQL izņēmums, NullPointerException utt.

Kopsavilkums

  • Izņēmums ir kļūda, kas notika programmas izpildes laikā.
  • Izņēmums norāda, ka, lai arī notikums var notikt, šāda veida notikumi notiek reti.
  • Parasti izņēmuma piemēri ir 1) dalīšana ar nulli, 2) piekļuve failam, kura nav, 3) divu nesaderīgu veidu pievienošana.
  • Izņēmums ir Python objekts, kas apzīmē kļūdu.
  • Izmēģinājuma paziņojums ietver atslēgvārda mēģinājumu, kam seko kols (:) un kodu komplekts, kurā var būt izņēmumi. Tam ir viena vai vairākas klauzulas.
  • Uztveršanas blokos vienlaikus tiek izmantots viens arguments, kas ir izņēmuma veids, kuru tas, visticamāk, noķers.
  • Izrādes paziņojums norāda argumentu, kas inicializē izņēmuma objektu.
  • Visbeidzot, bloķēšana vienmēr tiek izpildīta neatkarīgi no izmestā izņēmuma vai nē.