Utangulizi wa Hali ya Kipekee katika JavaScript
Sasa tutaangalia hali za kipekee katika JavaScript. Kuanza nitaunda utangulizi fulani, ambao utakuwa na mifano ya hali za kipekee kwa ujumla kwa lugha yoyote ya programu, na kisha tutachambua jinsi mambo yalivyo katika JavaScript.
Tunapoandika programu zetu, kwa dhati tunategemea kuwa mifumo yote ya kiufundi ya programu, tunayotumia, itafanya kazi ipasavyo.
Hata hivyo, hii si kweli kila wakati. Wakati wa kuhamisha data kupitia mtandao, muunganisho unakatika na data inafika kwetu kwa hali isiyo sahihi, au hata haifiki kabisa. Wakati wa kuandika faili, inageuka kuwa nafasi iliyotengwa kwetu kwenye diski ngumu imeisha, na faili haiwezi kuandikwa. Wakati wa kusoma faili, inageuka kuwa faili kama hiyo haipo na hakuna mahali pa kuisomea. Wakati wa kuchapisha data kwenye printer, hutokea mkanda unavyounganisha printer na kompyuta kukatika.
Hali zote zilizoelezewa zina kiini sawa: kuna shida fulani, ambayo inasababisha kutowezekana au kutokuwa na maana kukamilisha operesheni iliyopangwa.
Kuna pia hali, ambapo hutokea kosa fulani, ambalo sio shida. Kwa mfano, unauliza mtumiaji barua pepe yake, naye anaingiza barua pepe kwa muundo usiofaa. Ni wazi kuwa programu yetu haiwezi kuendelea kuchakata barua pepe, kwa kuwa haifai. Lakini, hata hivyo hii - sio hali ya kipekee. Programu yetu inaweza kurekebisha hali yenyewe: itatoa ujumbe wa kosa na mtumiaji atarudia kuingiza kwake.
Kwa kweli tofauti kati ya shida na sio shida ni yenye kutofautiana sana. Tukio ambalo programu moja inaweza kulisawazia kama hali ya kipekee, programu nyingine inaweza kulisawazia kama kosa fulani, ambalo inaweza kukabiliana nalo.
Kigezo hapa ni kifuatacho: ikiwa kutokea kwa shida programu yako inaweza kuendelea kufanya kile, ambacho imeundia, basi hii sio hali ya kipekee, na ikiwa haiwezi - basi ndio, hii ni ishara.
Kwa mfano, tuna programu, ambayo inahitaji kuuliza barua pepe ya mtumiaji. Ikiwa mtumiaji ameingiza barua pepe kwa muundo usiofaa - hii sio shida. Hili ni tatizo linalotarajiwa na programu yetu itauliza mtumiaji barua pepe mara nyingi, hadi atakapoingiza kwa usahihi.
Acha programu yetu, ambayo inauliza barua pepe, inahitaji pia kutuma barua pepe hiyo sahihi kupitia mtandao. Wakati huo huo, inageuka kuwa mtandao haufanyi kazi. Hili ndilo shida: programu haitaweza kwa njia yoyote kutuma data kupitia mtandao, ikiwa mtandao haufanyi kazi. Programu, hata hivyo, inaweza kuendelea utekelezaji wake: inaweza kutoa taarifa kuhusu shida, kurudia jaribio la kutuma kupitia baada ya muda fulani, na kadhalika. Lakini vitendo hivi sio kabisa kile, ambacho programu ilikuwa imeundia, kwani kitendo kikuu - kutuma barua pepe programu haitaweza kufanya.
Mara nyingi sana, kama ni hali ya kipekee au la, inategemea lugha ya programu. Katika lugha nyingi, ikiwa ghafla imetokea mgawanyo kwa sifuri - hii inachukuliwa kama ishara (kwa kuwa haiwezekani kugawanya kwa sifuri), lakini katika JavaScript - haichukuliwi hivyo (katika JavaScript inawezekana kugawanya kwa sifuri).