Намудҳои ҳолатҳои ба вуқӯъпезида дар JavaScript

Дар JavaScript хеле кам ҳолатҳо ба миён меоянд, ки истисноҳо (exceptions) ба вуқӯъ меоянд. Аввалан, танҳо ба ин сабаб, ки хеле кам ҷойҳо барои ба вуқӯъ омадани онҳо мавҷуданд.

Дуюм, ба ин сабаб, ки худи забон "ба ҳама чиз умедвор" аст: он ба бисёр чизҳо аз ангуштон мегузарад, масалан, ба тақсим бар сифр ё ба рамзи HTML-и нодуруст. Ҳатто агар шумо роҳи нодурустро ба сурат, ки мехоҳед бор кунед, ишора кунед, JavaScript ба шумо инро мебахшад ва онро ҳамчун истисно ҳисоб намекунад.

Аммо, ҳолатҳои истисноӣ вуҷуд доранд. Мо дуто аз содатаринҳоро таҳлил мекунем ва дар мисоли онҳо кор бо истисноҳо дар JavaScript-ро меомӯзем.

Якумин истисно он ҳангом ба миён меояд, ки мо мехоҳем JSON-и нодурустро таҳлил кунем (parse):

javascriptlet data = JSON.parse('{1,2,3,4,5}'); // ин JSON нодуруст аст

Ва истиснои дуввум он ҳангом ба миён меояд, ки ҳофизаи маҳаллӣ, барои сомонаи мо хоссикардашуда аз ҳад пур мешавад (бештар аз 5 мегабайт). Биёед ин истисноро сунъӣ ба даъват кунем:

javascriptlet str = '';
for (let i = 1; i <= 6 * 10 ** 6; i++) { // сатрро бештар аз 5 мб ташкил медиҳем
  str += '+';
}

localStorage.setItem('key', str); // кӯшиш мекунем ба ҳофиза нависем

JavaScript ба чунин ҳолатҳои истисноӣ чӣ гуна вокуниш нишон медиҳад? Он танҳо хаторо ба консол меандозад ва иҷрои минбаъдаи скриптро қатъ мекунад.

Вазифаи мо, ҳамчун барномасозон, дар он аст, ки чунин ҳолатро гирифта ва ба тавре бо он роҳ кушоем, ба барнома имкон надиҳем, ки комилан иҷрои худро қатъ кунад. Барои ин конструксияи махсуси try-catch вуҷуд дорад, ки мо онро дар дарсҳои оянда таҳлил мекунем.

Задание 1

Сатрро ба андозаи кофӣ калон созед ва кӯшиш кунед, ки онро ба ҳофизаи маҳаллӣ нависед. Боварӣ ҳосил кунед, ки дар консол хато хоҳад буд.

Задание 2

Кӯшиш кунед, ки JSON-и нодурустро таҳлил кунед (parse). Боварӣ ҳосил кунед, ки дар консол хато хоҳад буд.