Izņēmums ir neparedzēts notikums, kas notiek programmas izpildes laikā. Tas ir pazīstams arī kā a darbības laika kļūda . Kad rodas šī kļūda, Python izpildes laikā ģenerē izņēmumu, un to var apstrādāt, kas neļauj jūsu programmai pārtraukt darbību.
Piemērs: Šajā kodā sistēma nevar dalīt skaitli ar nulli, tāpēc tiek izvirzīts izņēmums.
Python3
a>=> 5> b>=> 0> print>(a>/>b)> |
>
>
Izvade
Traceback (most recent call last): File '/home/8a10be6ca075391a8b174e0987a3e7f5.py', line 3, in print(a/b) ZeroDivisionError: division by zero>
Izņēmumu apstrāde ar mēģinājumu, izņemot, cits un visbeidzot
- Izmēģiniet : šis bloks pārbaudīs izņēmuma kļūdu
- Izņemot : Šeit jūs varat rīkoties ar kļūdu
- Citādi : Ja nav izņēmuma, šis bloks tiks izpildīts
- Beidzot : Beidzot bloks vienmēr tiek izpildīts, vai nu tiek ģenerēts izņēmums, vai ne
Python Try, izņemot, cits un visbeidzot sintakse
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)>
Darbs ' mēģināt' un 'izņemot'
Vispirms sapratīsim, kā Python izmēģināt un izņemot darbojas
- Pirmkārt mēģināt klauzula tiek izpildīta, t.i., kods starp mēģināt un izņemot klauzula.
- Ja nav izņēmuma, tad tikai mēģināt klauzula darbosies, izņemot klauzula netiks izpildīta.
- Ja rodas kāds izņēmums, mēģināt klauzula tiks izlaista un izņemot klauzula darbosies.
- Ja rodas kāds izņēmums, bet izņemot klauzula kodā to neapstrādā, tā tiek nodota ārējam mēģināt paziņojumi. Ja izņēmums netiek apstrādāts, izpilde tiek pārtraukta.
- A mēģināt paziņojumā var būt vairāk nekā viens izņemot klauzula.
Piemērs: Mēģināsim ņemt lietotāja veselu skaitļu ievadi un iemest izņēmumu, izņemot bloku.
Python3
noķer un izmēģini javu
# Python code to illustrate working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >print>(>'Yeah ! Your answer is :'>, result)> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> > # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Izvade:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Uztveriet vairākus izņēmumus Python
Šeit ir piemērs, kas parāda, kā izmantot vairākus, izņemot klauzulas, lai apstrādātu dažādus izņēmumus.
Python3
try>:> >x>=> int>(>input>(>'Enter a number: '>))> >result>=> 10> /> x> except> ZeroDivisionError:> >print>(>'You cannot divide by zero.'>)> except> ValueError:> >print>(>'Invalid input. Please enter a valid number.'>)> except> Exception as e:> >print>(f>'An error occurred: {e}'>)> |
>
>
Izvade:
Enter a number: An error occurred: EOF when reading a line>
Citas klauzulas Python
Kods ievada else bloku tikai tad, ja try klauzula neizraisa izņēmumu.
Piemērs: Pretējā gadījumā tiks izpildīts bloks tikai tad, ja nav izņēmuma .
Python3
# Python code to illustrate working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> >else>:> >print>(>'Yeah ! Your answer is :'>, result)> > # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Izvade:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero>
Python beidzot Atslēgvārds
Python nodrošina atslēgvārdu beidzot , kurš ir vienmēr izpildīts pēc mēģinājuma un izņemot blokus. Pēdējais bloks vienmēr tiek izpildīts pēc parastā mēģinājuma bloka pārtraukšanas vai pēc tam, kad mēģinājuma bloks tiek pārtraukts kāda izņēmuma dēļ. Pat ja atgriezīsities izņēmuma blokā, tiks izpildīts pēdējais bloks
Piemērs: Mēģināsim iemest izņēmumu blokā izņemot, un beidzot tiks izpildīts vai nu izņēmums tiks ģenerēts, vai nē
Python3
# Python code to illustrate> # working of try()> def> divide(x, y):> >try>:> ># Floor Division : Gives only Fractional> ># Part as Answer> >result>=> x>/>/> y> >except> ZeroDivisionError:> >print>(>'Sorry ! You are dividing by zero '>)> >else>:> >print>(>'Yeah ! Your answer is :'>, result)> >finally>:> ># this block is always executed> ># regardless of exception generation.> >print>(>'This is always executed'>)> # Look at parameters and note the working of Program> divide(>3>,>2>)> divide(>3>,>0>)> |
>
>
Izvade:
Yeah ! Your answer is : 1 This is always executed Sorry ! You are dividing by zero This is always executed>