Увод у выключныя сітуацыі ў JavaScript
Зараз мы будзем разглядаць выключныя сітуацыі ў JavaScript. Для пачатку я зраблю некаторы ўвод, у якім будуць прыклады выключных сітуацый наогул для любых моў праграмавання, а потым разбярэмся, як справа абстоіць у JavaScript.
Калі мы пішам нашы праграмы, мы няяўна разлічваем на тое, што ўсе праграмна-тэхнічныя механізмы, якія выкарыстоўваюцца намі, будуць працаваць карэктна.
Гэта, аднак, не заўсёды так. Пры перадачы дадзеных па сеткі адбываецца абрыў сувязі і дадзеныя прыходзяць да нас у некарэктным выглядзе, ці наогул не прыходзяць. Під запісе файла аказваецца, што выдзеленае нам месца на цвёрдым дыску скончылася, і файл не можа запісацца. Під чытанні файла аказваецца, што такога файла не існуе і нам не адкуль чытаць. Під друку дадзеных на прынтары адбываецца абрыў кабеля, які злучае прынтар і камп'ютар.
Усе апісаныя сітуацыі маюць агульную сутнасць: адбываецца нейкі збой, які прыводзіць да немагчымасці або бессэнсоўнасці завяршэння запланаванай аперацыі.
Бываюць таксама сітуацыі, у якой адбываецца нейкая памылка, якая не з'яўляецца збоем. Напрыклад, вы пытаецеся ў карыстальніка яго email, і ён уводзіць email у некарэктным фармаце. Зразумела, што наша праграма не можа працягваць апрацоўваць email, так як ён не карэктны. Але, тым не менш гэта - не выключная сітуацыя. Наша праграма можа сама выправіць сітуацыю: яна вывядзе паведамленне пра памылку і карыстальнік паўторыць свой увод.
На самай справе розніца паміж збоем і не збоем вельмі расплыўчатая. Падзея, якую адна праграма можа трактаваць як выключную сітуацыю, іншая праграма можа трактаваць як нейкую памылку, з якой яна можа справіцца.
Крытэрый тут наступны: калі пры ўзнікненні праблемы ваша праграма можа працягваць выконваць тое, для чаго яна прызначана, то гэта не выключная сітуацыя, а калі не можа - то так, гэта выключэнне.
Напрыклад, у нас ёсць праграма, якая павінна спытаць email карыстальніка. Калі карыстальнік увёў email у некарэктным фармаце - гэта не збой. Гэта чаканая праблема і наша праграма будзе пытацца ў карыстальніка email столькі разоў, пакуль ён не ўвядзе яго карэктна.
Хай наша праграма, якая пытаецца email, павінна таксама адправіць гэты карэктны email праз інтэрнэт. Пры гэтым аказваецца, што інтэрнэт не працуе. Вось гэта ўжо праблема: праграма ніяк не зможа адправіць дадзеныя праз інтэрнэт, калі інтэрнэт не працуе. Праграма, тым не менш, можа працягваць свой выкананне: яна можа вывесці інфармацыю пра праблему, паўторыць спробу адпраўкі праз некаторы час, і гэтак далей. Але гэтыя дзеянні ужо не зусім тое, для чаго праграма была прызначана, так як асноўнае дзеянне - адпраўка email праграма зрабіць не зможа.
Вельмі часта то, выключная сітуацыя ці не, залежыць ад мовы праграмавання. У многіх мовах, калі раптам адбылося дзяленне на нуль - гэта лічыцца выключэннем (так як на нуль дзяліць нельга), але ў JavaScript - не лічыцца (у JavaScript на нуль дзяліць можна).