Utangulizi wa Hali ya Kipekee katika Python
Katika sehemu hii, hali ya kipekee katika Python itachambuliwa. Kwanza, ni muhimu kuelewa ni nini hali hii inawasilisha.
Wakati wa kuandika programu yoyote, msanidi programu kwa dhumuni huwa na matumaini kwamba mifumo yote ya kiufundi na programu itafanya kazi ipasavyo.
Hata hivyo, hii si kweli kila wakati. Wakati wa kupitisha data kupitia mtandao, muunganisho unavunjika na data inakuja kwetu kwa muundo usiofaa, au haifiki kabisa. Wakati wa kuandika faili, inageuka kuwa nafasi iliyotengwa kwenye diski ngumu imekwisha, na faili haiwezi kuandikwa. Wakati wa kusoma faili, inageuka kuwa faili kama hiyo haipo na hatuna mahali pa kuisomea. Wakati wa kuchapisha data kwenye kichapishi, kelele inayounganisha kichapishi na kompyuta inavunjika.
Hali zote zilizoelezewa zina kiini cha kawaida: kuna shida fulani inayotokea, ambayo husababisha kutowezekana au kutokuwa na maana kukamilisha operesheni iliyopangwa.
Kuna pia hali ambapo hitilafu fulani hutokea, lakini sio shida. Kwa mfano, unauliza mtumiaji barua pepe yake, na anaingiza barua pepe kwa muundo usiofaa. Ni wazi kuwa programu yetu haiwezi kuendelea kuchakata barua pepe, kwa sababu sio sahihi. Hata hivyo, hii sio hali ya kipekee. Programu yetu inajiweza kurekebisha hali hiyo: itatoa ujumbe wa hitilafu na mtumiaji atarudia uingizaji wake.
Kwa kweli, tofauti kati ya shida na hitilafu siyo wazi kabisa. Tukio ambalo programu moja inaweza kufasiri kama hali ya kipekee, programu nyingine inaweza kuifasiri kama hitilafu fulani ambayo inaweza kukabiliana nayo.
Kigezo hapa ni kifuatacho: ikiwa, wakati tatizo linapotokea, programu yako inaweza kuendelea kufanya kile ambacho imeundwa kufanya, basi hii sio hali ya kipekee, na ikiwa haiwezi - basi ndio, hii ni hali ya kipekee.
Kwa mfano, tuna programu ambayo inapaswa kuuliza barua pepe ya mtumiaji. Ikiwa mtumiaji aliingiza barua pepe kwa muundo usiofaa - hii sio shida. Hili ni tatizo linalotarajiwa na programu yetu itauliza mtumiaji barua pepe mara nyingi mpaka atakapoingiza kwa usahihi.
Hebu tuseme programu yetu, ambayo inauliza barua pepe, inapaswa pia kutuma barua pepe hiyo sahihi kupitia mtandao. Wakati huo huo, inageuka kuwa mtandao haufanyi kazi. Hili ndilo shida: programu haitoweza kutuma data kupitia mtandao ikiwa mtandao haufanyi kazi. Programu, hata hivyo, inaweza kuendelea na utekelezaji wake: inaweza kutoa taarifa kuhusu shida, kurudia jaribio la kutuma baada ya muda fulani, na kadhalika. Lakini vitendo hivi sio hasa kile ambacho programu ilikusudiwa kufanya, kwa sababu kitendo kikuu - kutuma barua pepe - programu haiwezi kukifanya.
Kutokana na hili, mara nyingi sana tafsiri ya kitendo gani kitachukuliwa kwa kawaida, na kipi kitachukuliwa kama kipekee inategemea kazi zinazokabidhiwa kwa programu.