Poikkeustilanteiden esittely Pythonissa
Tässä osiossa käsitellään poikkeustilanteita Pythonissa. Aluksi on syytä ymmärtää, mitä ne ovat.
Kirjoitettaessa mitä tahansa ohjelmaa, kehittäjä olettaa implisiittisesti, että kaikki käytetyt ohjelmisto-tekniset mekanismit toimivat oikein.
Näin ei kuitenkaan aina ole. Tietoja siirrettäessä verkon yli yhteyden katkeaminen tapahtuu ja tiedot saapuvat meille virheellisessä muodossa, tai eivät lainkaan saavu. Tiedostoa tallennettaessa osoittautuu, että meille varattu tila kiintolevyltä on loppunut, eikä tiedostoa voida tallentaa. Tiedostoa luettaessa osoittautuu, että tällaista tiedostoa ei ole olemassa eikä meillä ole mistään lukea. Tulostettaessa tietoja tulostimeen tapahtuu kaapelin katkeaminen, joka yhdistää tulostimen ja tietokoneen.
Kaikilla kuvatuilla tilanteilla on yhteinen ydin: tapahtuu jonkinlainen häiriö, joka johtaa suunnitellun toimenpiteen suorittamisen mahdottomuuteen tai merkityksettömyyteen.
On myös tilanteita, joissa tapahtuu jokin virhe, joka ei ole häiriö. Esimerkiksi, kysyt käyttäjältä hänen sähköpostiosoitettaan, ja hän syöttää sähköpostiosoitteen väärässä muodossa. On selvää, että ohjelmamme ei voi jatkaa sähköpostiosoitteen käsittelyä, koska se on virheellinen. Mutta siitä huolimatta tämä - ei ole poikkeustilanne. Ohjelmamme voi itse korjata tilanteen: se tulostaa virheilmoituksen ja käyttäjä toistaa syöttönsä.
Itse asiassa ero häiriön ja ei-häiriön välillä on hyvin epämääräinen. Tapahtuma, jonka yksi ohjelma saattaa tulkita poikkeustilanteeksi, toinen ohjelma saattaa tulkita jonkinlaiseksi virheeksi, jonka kanssa se voi selviytyä.
Kriteeri tässä on seuraava: jos ongelman ilmaantuessa ohjelmasi voi jatkaa sitä suorittamista, varten mihin se on tarkoitettu, niin tämä ei ole poikkeustilanne, ja jos ei voi - niin kyllä, tämä on poikkeus.
Esimerkiksi, meillä on ohjelma, jonka tulee kysyä käyttäjän sähköpostiosoite. Jos käyttäjä on syöttänyt sähköpostiosoitteen väärässä muodossa - tämä ei ole häiriö. Tämä on odotettu ongelma ja ohjelmamme kysyy käyttäjältä sähköpostiosoitetta niin monta kertaa, kunnes hän ei syötä sitä oikein.
Oletetaan, että ohjelmamme, joka kysyy sähköpostiosoitetta, täytyy myös lähettää tämä oikea sähköpostiosoite internetin kautta. Samaan aikaan osoittautuu, että internet ei toimi. Tämä on jo ongelma: ohjelma ei millään pysty lähettämään tietoja internetin kautta, jos internet ei toimi. Ohjelma voi kuitenkin jatkaa suoritustaan: se voi tulostaa tiedon ongelmasta, toistaa lähetysyrityksen jonkin ajan kuluttua, ja niin edelleen. Mutta nämä toimet eivät ole aivan sitä, varten mihin ohjelma oli tarkoitettu, sillä pääasiallista toimenpidettä - sähköpostin lähetystä ohjelma ei pysty tekemään.
Tästä johtuen, tulkinta siitä mikä käyttäytyminen katsotaan normaaliksi, ja mikä poikkeukselliseksi, riippuu usein ohjelmoijalla olevista tehtävistä.