⊗pyPmExcCt 75 of 129 menu

Poikkeusten käsittely Pythonissa

Pythonissa verrattuna muihin ohjelmointikieliin on erittäin paljon tilanteita, jotka aiheuttavat poikkeuksia.

Tarkastellaanpa niitä tarkemmin. Oletetaan, että meillä on lista:

lst = [1, 2, 3]

Viitataan listan olematomaan elementtiin:

print(lts[4])

Koodin suorittamisen jälkeen tulostuu virhe (poikkeus):

IndexError: list index out of range

Jos haluamme jatkaa työskentelyä ilman poikkeuksen tulostamista, se tulee siepata try-except-rakenteella. Sen syntaksi on seuraava:

try: # koodi, joka aiheuttaa poikkeuksen except: # virheen käsittely

try-lohkossa tulee sijoittaa koodi, joka voi sisältää poikkeuksen. Jos tämän koodin suorituksen aikana ilmenee poikkeustilanne, koodin suoritus ei keskeydy, vaan siirtyy except-lohkon koodiin. Tässä lohkossa tulee kirjoittaa viesti, joka kuvailee mahdollisimman tarkasti esiintyneen virheen olemusta.

Jos try-lohkon suorituksen aikana yhtään poikkeustilannetta ei sattunut, niin hyödyllinen koodi suoritetaan vain, eikä except-lohkon koodia suoriteta.

Siepataanpa poikkeutemme viitatessa olematomaan listaelementtiin. Sijoitetaan try-lohkoon koodi, jossa on mahdollinen virhe. Ja except-lohkossa ilmoitetaan konsoliin viesti 'error: elem is not exist':

lst = [1, 2, 3] try: print(lst[4]) except: print('error: elem is not exist')

Koodin suorittamisen jälkeen tulostuu:

'error: elem is not exist'

try-except-rakenteen opiskelun jälkeen kirjoittamasi koodin tyyli pitäisi muuttua. Nyt kaikki kohdat, joissa voi ilmetä poikkeustilanne, tulee kääriä try:iin, ja except-lohkossa kuvata reaktio tähän poikkeukseen.

Kysy käyttäjältä kaksi numeroa. Jaa toinen toisella. Sieppaa nollalla jakamisen poikkeustilanne.

Kysy käyttäjältä numero. Etsi tämän numeron neliöjuuri. Sieppaa negatiivisen luvun juuren ottamisen poikkeustilanne.

Annettu lista. Kysy käyttäjältä kokonaisluku. Hae listan elementti, jonka numeron käyttäjä syötti. Sieppaa poikkeustilanne, joka tapahtuu, jos käyttäjä syötti numeron listan alueen ulkopuolella.

Annettu seuraava koodi:

num = '5' res = num + 2 print(res)

Mikä tässä koodissa on vialla? Korjaa sen puutteet.

Annettu seuraava koodi:

lst = [1, 2, 3, 4] def getElem(iter): print(iter[4]) getElem(lst)

Mikä tässä koodissa on vialla? Korjaa sen puutteet.

Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää