Вовед во исклучени ситуации во Python
Во овој дел ќе се разгледуваат исклучени ситуации во Python. За почеток треба да се разбере што тие претставуваат.
При пишување на која било програма, развивачот имплицитно претпоставува дека сите користени програмско-технички механизми ќе работат коректно.
Ова, сепак, не е секогаш така. При пренос на податоци преку мрежата се случува прекин на врската и податоците ни доаѓаат во некоректен вид, или воопшто не доаѓаат. При запишување на датотека излегува дека просторот што ни е доделен на хард дискот е исцрпен, и датотеката не може да се запише. При читање на датотека излегува дека таква датотека не постои и немаме од каде да читаме. При печатење на податоци на печатач се случува прекин на кабелот што го поврзува печатачот и компјутерот.
Сите опишани ситуации имаат заедничка суштина: се случува одреден Defect, што доведува до неможност или бесмисленост на завршување на планираната операција.
Постојат и ситуации во кои се случува одредена грешка, која не е Defect. На пример, го прашувате корисникот за неговиот email, и тој внесува email во некоректен формат. Јасно е дека нашата програма не може да продолжи да го обработува email, бидејќи тој не е коректен. Но, сепак ова - не е исклучена ситуација. Нашата програма може самата да ја исправи ситуацијата: таа ќе испечати порака за грешка и корисникот ќе го повтори својот внес.
Всушност разликата помеѓу Defect и не Defect е прилично нејасна. Настан, кој една програма може да го толкува како исклучена ситуација, друга програма може да го толкува како одредена грешка, со која таа може да се справи.
Критериумот овде е следниот: ако при појава на проблемот вашата програма може да продолжи да го извршува она, за што е наменета, тогаш ова не е исклучена ситуација, а ако не може - тогаш да, ова е исклучок.
На пример, имаме програма, која треба да го праша email на корисникот. Ако корисникот внел email во некоректен формат - ова не е Defect. Ова е очекуван проблем и нашата програма ќе го прашува корисникот за email толку пати, додека тој не го внесе коректно.
Нека нашата програма, која го прашува email, треба исто така да го испрати овој коректен email преку интернет. При тоа излегува, дека интернетот не работи. Ова веќе е проблем: програмата никако не може да ги испрати податоците преку интернет, ако интернетот не работи. Програмата, сепак, може да продолжи со своето извршување: таа може да ги прикаже информациите за проблемот, да ја повтори обидот за испраќање по одредено време, и така натаму. Но, овие дејства веќе не се сосема тоа, за што програмата била наменета, бидејќи основното дејство - испраќање на email програмата не може да го направи.
Врз основа на што, многу често толкувањето кое однесување ќе се смета за нормално, а кое за исклучено зависи од задачите, кои стојат пред програмерот.