Kokeile, paitsi, muuta ja lopuksi Pythonissa
Poikkeus on odottamaton tapahtuma, joka tapahtuu ohjelman suorituksen aikana. Se tunnetaan myös nimellä a suorituksenaikainen virhe . Kun tämä virhe tapahtuu, Python luo poikkeuksen suorituksen aikana ja se voidaan käsitellä, mikä estää ohjelmaasi keskeytymästä.
Esimerkki: Tässä koodissa järjestelmä ei voi jakaa numeroa nollalla, joten poikkeus tehdään.
Python 3
a> => 5> b> => 0> print> (a> /> b)> |
Lähtö
Traceback (most recent call last): File '/home/8a10be6ca075391a8b174e0987a3e7f5.py', line 3, in print(a/b) ZeroDivisionError: division by zero
Poikkeuskäsittely kokeilulla paitsi, else, ja lopuksi
- Yrittää : Tämä lohko testaa poikkeavan virheen tapahtuvan
- Paitsi : Täällä voit käsitellä virhettä
- Muu : Jos poikkeusta ei ole, tämä lohko suoritetaan
- Lopulta : Lopuksi lohko suoritetaan aina joko luodaanko poikkeus tai ei
Python Try, paitsi, else ja lopuksi syntaksi
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)
Työskentely ' yrittää' ja 'paitsi'
Ymmärretään ensin, kuinka Python yrittää paitsi toimii
- Ensimmäinen yrittää lauseke suoritetaan eli koodi välillä yrittää ja paitsi lauseke.
- Jos ei ole poikkeusta, niin vain yrittää lauseke tulee voimaan, paitsi lauseketta ei panna täytäntöön.
- Jos jokin poikkeus tapahtuu, yrittää lauseke ohitetaan ja paitsi lauseke tulee voimaan.
- Jos jokin poikkeus tapahtuu, mutta paitsi koodin lauseke ei käsittele sitä, vaan se välitetään ulommalle yrittää lausunnot. Jos poikkeus jätetään käsittelemättä, suoritus pysähtyy.
- A yrittää lausekkeessa voi olla useampi kuin yksi paitsi lauseke.
Esimerkki: Yritetään ottaa käyttäjän kokonaisluku ja heittää poikkeus paitsi lohkoon.
Python 3
# 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> )> |
Lähtö:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero
Pythonissa on useita poikkeuksia
Tässä on esimerkki, joka osoittaa, kuinka käyttää useita paitsi lausekkeita erilaisten poikkeusten käsittelemiseen:
Python 3
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}'> )> |
Lähtö:
Enter a number: An error occurred: EOF when reading a line
Muut lausekkeet Pythonissa
Koodi tulee else-lohkoon vain, jos try-lause ei aiheuta poikkeusta.
Esimerkki: Muussa tapauksessa lohko suoritetaan vain kun poikkeusta ei tapahdu .
Python 3
# 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> )> |
Lähtö:
Yeah ! Your answer is : 1 Sorry ! You are dividing by zero
Python vihdoin avainsana
Python tarjoaa avainsanan vihdoinkin , mikä on aina toteutettu kokeilun jälkeen ja paitsi lohkot. Lopullinen lohko suoritetaan aina normaalin try-lohkon päättymisen jälkeen tai sen jälkeen, kun try-lohko päättyy jonkin poikkeuksen vuoksi. Vaikka palaat paitsi lohkoon, lopullinen lohko suoritetaan silti
Esimerkki: Yritetään heittää poikkeus paitsi lohkoon ja Lopuksi suorittaa joko poikkeuksen syntyy tai ei
Python 3
# 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> )> |
Lähtö:
Yeah ! Your answer is : 1 This is always executed Sorry ! You are dividing by zero This is always executed