JavaScriptда юзга келадиган вазият турлари
JavaScriptда истиснолар юз берадиган жуда оз вазиятлар мавжуд. Биринчидан, жуда оз жойларда улар юз белиши мумкин.
Иккинчидан, ўзининг "ҳамма нарсани афв этгувчи" лиги сабабли: у кўп нарсаларга, масалан, нолга бўлиш ёки нотўғри HTML кодга кўзини юмади. Ҳатто сиз юкламоқчи бўлган сурат учун нотўғри йўлни кўрсатсангиз ҳам, JavaScript сизни афв этади ва буни истисно деб ҳисобламайди.
Аммо, истисно ҳолатлари мавжуд. Биз энг содда иккитасини кўриб чиқамиз ва уларнинг мисолида JavaScriptда истиснолар билан ишлашни ўрганамиз.
Биринчи истисно, биз нотўғри JSON ни таҳлил қилмоқчи бўлганимизда юз беради:
let data = JSON.parse('{1,2,3,4,5}'); // бу json нотўғри
Иккинчи истисно эса, бизнинг веб-сайтимиз учун
ажратилган маҳаллий сақлович тўлганида (5 мегабайтдан
кўп) юз беради. Келинг, бундай истиснони сунъий
ҳолда чакирамиз:
let str = '';
for (let i = 1; i <= 6 * 10 ** 6; i++) { // 5 мб дан ошган сатрни ҳосил қиламиз
str += '+';
}
localStorage.setItem('key', str); // сақловичга ёзишга ҳаракат қиламиз
JavaScript бундай истисно ҳолатларига қандай реакция беради? У жуда оддийгина консолда хатолик чиқаради ва скриптнинг янада давом этишини тўхтатади.
Дарставор сифатида, бизнинг вазифамиз бундай
вазиятни ушлаб, унга қандайдир тарзда ечім топа
олишимиз, дастурнинг иши умуман тўхтаб қолишига
йўл кўймасдан. Бунинг учун try-catch
деб аталувчи махсус қурилиш мавжуд бўлиб, биз уни
кейинги дарсларда кўриб чиқамиз.
Етарлича катта ҳажмдаги сатр яратинг ва уни маҳаллий сақловичка ёзишга урининг. Консолда хатолик пайдо бўлишига ишонч ҳосил қилинг.
Нотўғри JSON ни таҳлил қилишга урининг. Консолда хатолик пайдо бўлишига ишонч ҳосил қилинг.