JavaScript-тегі istisnalarғa kirispe
Қазір біз JavaScript-тегі istisnalardı қарастырамыз. Бастапқыда жалпы программалау тілдері үшін istisnalar мысалдары бар кіріспе жасаймын, содан кейін JavaScript-тегі жағдайды қалай қарастыратынымызды білеміз.
Біз программаларды жазған кезде, біздің қолданатын барлық программалық-техникалық механизмдердің дұрыс жұмыс істейтінін жасырын түрде есептейміз.
Бірақ бұл әрқашан олай бола бермейді. Желі арқылы деректерді беру кезінде байланыс үзіліп, деректер бізге дұрыс емес түрде келеді, немесе мүлдем келмейді. Файлды жазған кезде, бөлінген қатты диск кеңістігі tawıp, файл жазылмай қалады. Файлды оқу кезінде, мұндай файл жоқ екені және оқуға ерекже жоқ екені белгілі болады. Принтерге деректерді басып шығарған кезде, принтер мен компьютерді байланыстыратын кабель үзіледі.
Сипатталған барлық жағдайлардың ортақ мәні бар: жоспарланған операцияны аяқтауға мумкін емес немесе мағынасыз ететін қандай да бір ақаулық пайда болады.
Сондай-ақ ақаулық емес қандай да бір қате пайда болатын жағдайлар бар. Мысалы, сіз пайдаланушыдан оның email-ін сұрайсыз, және ол дұрыс емес форматта email енгізеді. Біздің программамыздың email-ді өңдеуді жалғастыра алмайтыны түсінікті, себебі ол дұрыс емес. Бірақ, бәрібір, бұл - istisna емес. Біздің программа жағдайды өзі түзе алады: ол қате туралы хабарлайды және пайдаланушы өз енгізуін қайталайды.
Шын мәнінде, ақаулық пен ақаулық еместің арасындағы айырмашылық анық емес. Бір программа istisna ретінде қарастыра алатын оқиғаны, басқа программа өзі жеңе алатын қандай да бір қате ретінде қарастыра алады.
Мұндағы критерий мынадай: егер проблема пайда болған кезде сіздің программаңыз ол үшін арналғанды орындауды жалғастыра алатын болса, онда бұл istisna емес, ал егер жалғастыра алмаса - онда иә, бұл istisna.
Мысалы, бізде пайдаланушының email-ін сұрайтын программа бар. Егер пайдаланушы email-ді дұрыс емес форматта енгізсе - бұл ақаулық емес. Бұл күтілетін проблема және біздің программамыз пайдаланушыдан ол дұрыс енгізгенге дейін қанша рет сұраса да сұрайды.
Email сұрайтын программамыз сондай-ақ осы дұрыс email-ді интернет арқылы жіберуі керек болсын. Сонымен бірге, интернет жұмыс істемейтіні белгілі болды. Міне, бұл қазірдің өзінде проблема: егер интернет жұмыс істемейтін болса, программа интернет арқылы деректерді жібере алмайды. Программа, бәрібір, өз орындалуын жалғастыра алады: ол проблема туралы ақпаратты шығара алады, жіберуді белгілі бір уақыттан кейін қайталай алады, және т.б. Бірақ бұл әрекеттер программаның не үшін арналғанына толық сәйкес келмейді, себебі негізгі әрекет - email жіберу программа орындай алмайды.
Istisnaлы жағдай ба, жоқ па, бұл жиі программалау тіліне байланысты. Көптеген тілдерде, егер нөлге бөлу орын алса - бұл istisna саналады (себебі нөлге бөлуге болмайды), бірақ JavaScript-те - саналмайды (JavaScript-те нөлге бөлуге болады).