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:
- mēģiniet
- noķert
- beidzot
- 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ē.