Introduktion till undantag i Python
I det här avsnittet kommer undantag i Python att behandlas. Först och främst måste vi förstå vad de är.
När man skriver ett program antar utvecklaren implicit att alla använda programvarutekniska mekanismer kommer att fungera korrekt.
Detta är dock inte alltid fallet. Vid överföring av data över nätet uppstår förbindelseavbrott och data kommer till oss i felaktig form, eller kommer inte alls. Vid skrivning av en fil visar det sig att utrymmet på hårddisken som avsetts för oss är slut, och filen kan inte sparas. Vid läsning av en fil visar det sig att filen inte finns och vi har ingenstans att läsa ifrån. Vid utskrift av data på en skrivare uppstår ett avbrott i kabeln som förbinder skrivaren och datorn.
Alla beskrivna situationer har en gemensam kärna: ett fel uppstår, vilket leder till omöjlighet eller meningslöshet att slutföra den planerade operationen.
Det finns också situationer där ett fel uppstår som inte är ett sammanbrott. Till exempel, du frågar användaren om hans e-post, och han skriver in en e-postadress i felaktigt format. Det är tydligt att vårt program inte kan fortsätta att behandla e-postadressen eftersom den inte är korrekt. Men ändå är detta inte ett undantag. Vårt program kan själv rätta till situationen: det visar ett felmeddelande och användaren upprepar sin inmatning.
I själva verket är skillnaden mellan ett sammanbrott och icke-sammanbrott ganska suddig. En händelse som ett program kan tolka som ett undantag, kan ett annat program tolka som ett fel som det kan hantera.
Kriteriet här är följande: om vid uppkomst av ett problem ditt program kan fortsätta att utföra det som det är avsett för, så är det inte ett undantag, och om det inte kan - då ja, det är ett undantag.
Till exempel, vi har ett program som skall fråga efter användarens e-post. Om användaren skrivit in en e-postadress i felaktigt format - är det inte ett sammanbrott. Det är ett förväntat problem och vårt program kommer att fråga användaren om e-post så många gånger tills han skriver in den korrekt.
Låt oss säga att vårt program, som frågar efter e-post, också måste skicka denna korrekta e-post via internet. Då visar det sig att internet inte fungerar. Detta är redan ett problem: programmet kan på inget sätt skicka data via internet om internet inte fungerar. Programmet kan ändå fortsätta sin exekvering: det kan visa information om problemet, försöka skicka igen efter en stund, och så vidare. Men dessa åtgärder är inte riktigt det som programmet var avsett för, eftersom huvudåtgärden - att skicka e-post - kommer programmet inte att kunna göra.
Baserat på detta, beror tolkningen av vilket beteende som anses vara normalt, och vilket som anses vara exceptionellt, ofta på de uppgifter som programmeraren står inför.