Poikkeusten käsittely Pythonissa

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

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

pythonlst = [1, 2, 3]

Viitataan listan olematomaan elementtiin:

pythonprint(lts[4])

Koodin suorittamisen jälkeen tulostuu virhe (poikkeus):

errorIndexError: list index out of range

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

pythontry:
  # 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':

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

Koodin suorittamisen jälkeen tulostuu:

python'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.

Задание 1

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

Задание 2

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

Задание 3

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.

Задание 4

Annettu seuraava koodi:

pythonnum = '5'
res = num + 2

print(res)

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

Задание 5

Annettu seuraava koodi:

pythonlst = [1, 2, 3, 4]

def getElem(iter):
  print(iter[4])

getElem(lst)

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