Inleiding tot uitzonderingen in Python
In dit gedeelte zullen uitzonderingen in Python worden besproken. Om te beginnen is het nodig om te begrijpen wat ze eigenlijk zijn.
Bij het schrijven van een programma gaat de ontwikkelaar er impliciet van uit dat alle gebruikte software-technische mechanismen correct zullen werken.
Dit is echter niet altijd het geval. Bij het verzenden van gegevens via het netwerk verbreekt de verbinding en komen de gegevens bij ons in een ongeldige vorm aan, of komen helemaal niet aan. Bij het schrijven van een bestand blijkt dat de toegewezen ruimte op de harde schijf op is, en het bestand kan niet worden weggeschreven. Bij het lezen van een bestand blijkt dat zo'n bestand niet bestaat en we hebben niets om te lezen. Bij het printen van gegevens op een printer verbreekt de kabel die de printer en de computer verbindt.
Alle beschreven situaties hebben een gemeenschappelijke kern: er treedt een storing op die leidt tot onmogelijkheid of zinloosheid van het voltooien van de geplande operatie.
Er zijn ook situaties waarin een fout optreedt die geen storing is. Bijvoorbeeld, je vraagt de gebruiker om zijn e-mailadres, en hij voert een e-mailadres in een ongeldig formaat in. Het is duidelijk dat ons programma niet door kan gaan met het verwerken van het e-mailadres, omdat het niet correct is. Maar toch is dit geen uitzonderlijke situatie. Ons programma kan de situatie zelf herstellen: het toont een foutmelding en de gebruiker herhaalt zijn invoer.
In werkelijkheid is het verschil tussen een storing en geen storing nogal vaag. Een gebeurtenis die het ene programma kan interpreteren als een uitzonderlijke situatie, kan een ander programma interpreteren als een fout waar het mee om kan gaan.
Het criterium hier is als volgt: als bij het voordoen van een probleem je programma kan doorgaan met uitvoeren waarvoor het bedoeld is, dan is het geen uitzonderlijke situatie, en als het dat niet kan - dan ja, is het een uitzondering.
Bijvoorbeeld, we hebben een programma dat het e-mailadres van de gebruiker moet vragen. Als de gebruiker een e-mailadres in een ongeldig formaat invoert - is dat geen storing. Dit is een verwacht probleem en ons programma zal de gebruiker zo vaak om een e-mailadres vragen, totdat hij het correct invoert.
Stel dat ons programma, dat om een e-mailadres vraagt, dit correcte e-mailadres ook via internet moet verzenden. Op dat moment blijkt dat internet niet werkt. Dit is wel een probleem: het programma kan op geen enkele manier gegevens via internet verzenden als internet niet werkt. Het programma kan niettemin doorgaan met uitvoeren: het kan informatie over het probleem tonen, de verzendpoging na enige tijd herhalen, enzovoort. Maar deze acties zijn niet helemaal waarvoor het programma bedoeld was, omdat de hoofdactie - het verzenden van het e-mailadres - het programma niet kan uitvoeren.
Hieruit volgt dat de interpretatie van welk gedrag als normaal wordt beschouwd, en welk gedrag als uitzonderlijk, vaak afhangt van de taken die de programmeur moet uitvoeren.