Ներածություն JavaScript-ի բացառիկ իրավիճակների մասին
Այժմ մենք կդիտարկենք բացառիկ իրավիճակները JavaScript-ում: Սկզբում ես կկատարեմ մի ներածություն, որում կլինեն օրինակներ բացառիկ իրավիճակների վերաբերյալ ընդհանրապես ցանկացած ծրագրավորման լեզուների համար, ապա կպարզենք, թե ինչպես է դա JavaScript-ում:
Երբ մենք գրում ենք մեր ծրագրերը, մենք անուղղակիորեն ենթադրում ենք, որ բոլոր ծրագրային-տեխնիկական մեխանիզմները, որոնք մենք օգտագործում ենք, կաշխատեն ճիշտ:
Սակայն դա միշտ չէ, որ այդպես է: Ցանցի միջոցով տվյալներ փոխանցելիս տեղի է ունենում կապի խզում, և տվյալները մեզ հասնում են ոչ ճիշտ տեսքով, կամ ընդհանրապես չեն հասնում: Ֆայլը գրելիս պարզվում է, որ հատկացված տարածությունը կոշտ սկավառակի վրա սպառվել է, և ֆայլը չի կարող գրվել: Ֆայլը կարդալիս պարզվում է, որ այդպիսի ֆայլ գոյություն չունի, և մեզանից ոչ ոք չի կարող կարդալ դրանք: Տվյալները տպիչով տպելիս տեղի է ունենում մալուխի խզում, որը միացնում է տպիչը և համակարգիչը:
Նկարագրված բոլոր իրավիճակներն ունեն ընդհանուր էություն. տեղի է ունենում ինչ-որ խափանում, որն հանգեցնում է նախատեսված գործողությունը ավարտելու անհնարինությանը կամ անիմաստությանը:
Լինում են նաև իրավիճակներ, որոնցում տեղի է ունենում ինչ-որ սխալ, որը խափանում չէ: Օրինակ. դուք հարցնում եք օգտատիրոջը նրա էլփոստը. և նա մուտքագրում է էլփոստը ոչ ճիշտ ձևաչափով: Հասկանալի է, որ մեր ծրագիրը չի կարող շարունակել մշակել էլփոստը, քանի որ այն ճիշտ չէ: Սակայն, այնուամենայնիվ, սա բացառիկ չէ իրավիճակ: Մեր ծրագիրը կարող է ինքնուրույն ուղղել իրավիճակը. այն կցուցադրի սխալի մասին հաղորդագրություն և օգտատերը կկրկնի իր մուտքագրումը:
Իրականում խափանման և ոչ խափանման միջև տարբերությունը շատ անորոշ է: Իրադարձություն, որը մի ծրագիր կարող է մեկնաբանել որպես բացառիկ իրավիճակ, մեկ այլ ծրագիր կարող է մեկնաբանել որպես ինչ-որ սխալ, որի հետ այն կարող է հաղթահարել:
Չափանիշը այստեղ հետևյալն է. եթե խնդրի առաջացման դեպքում ձեր ծրագիրը կարող է շարունակել կատարել այն, ինչի համար այն նախատեսված է. ապա սա բացառիկ իրավիճակ չէ, իսկ եթե ոչ, ապա այո, սա բացառություն է:
Օրինակ, մենք ունենք ծրագիր, որը պետք է հարցնի օգտատիրոջ էլփոստը: Եթե օգտատերը մուտքագրել է էլփոստը ոչ ճիշտ ձևաչափով, սա խափանում չէ: Սա սպասված խնդիր է, և մեր ծրագիրը կհարցնի օգտատիրոջից էլփոստը այնքան անգամ, մինչև որ նա այն ճիշտ չմուտքագրի:
Ենթադրենք, մեր ծրագիրը, որը հարցնում է էլփոստը, պետք է նաև ուղարկի այդ ճիշտ էլփոստը ինտերնետի միջոցով: Այդ դեպքում պարզվում է. որ ինտերնետը չի աշխատում: Ահա սա արդեն խնդիր է. ծրագիրը ոչ մի կերպ չի կարող ուղարկել տվյալները ինտերնետի միջոցով, եթե ինտերնետը չի աշխատում: Ծրագիրը, այնուամենայնիվ, կարող է շարունակել իր կատարումը. այն կարող է ցուցադրել տեղեկատվություն խնդրի մասին, կրկնել ուղարկման փորձը որոշ ժամանակ անց, և այլն: Բայց այդ գործողությունները արդեն ամբողջովին այն չեն, ինչի համար ծրագիրն էր նախատեսված, քանի որ հիմնական գործողությունը - էլփոստի ուղարկումը, ծրագիրը չի կարող անել:
Շատ հաճախ այն, թե բացառիկ իրավիճակ է, թե ոչ, կախված է ծրագրավորման լեզվից: Շատ լեզուներում, եթե հանկարծ տեղի է ունենել զրոյի բաժանում - սա համարվում է բացառություն (քանի որ զրոյի վրա բաժանել չի կարելի), բայց JavaScript-ում - չի համարվում (JavaScript-ում կարելի է բաժանել զրոյի վրա):