Истифодаи навъҳои истисноҳо дар JavaScript
Бигзор мо функсияе дорем, ки параметраш JSON бо массиви додаҳо қабул мекунад ва ҳар як унсури ин массивро ба нигоҳдории маҳаллӣ менависад:
function saveData(json) {
let arr = JSON.parse(json);
for (let i = 0; i < arr.length; i++) {
localStorage.setItem(i, arr[i]);
}
}
Дар ин функсия вазъияти истисноӣ метавонад дар ду ҷо пайдо шавад: ҳангоми таҳлили JSON ва ҳангоми кӯшиши нигоҳ доштани додаҳо дар нигоҳдории маҳаллӣ.
Бигзор, масалан, ба ҳисоби коркарди хатоҳо мо қарор додем, ки паёми муайянеро дар бораи мушкилиҳо чоп кунем:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
alert('баъзе мушкилиҳо');
}
Паёми мо, албатта, хуб аст, аммо он мушкилиҳои пайдошударо ҳеҷ тафовут намедиҳад. Мантиқан дурусттар мебуд, ки паёмеро чоп кунем, ки кадом мушкилӣ ба амал омадааст.
Барои ин, хатоҳои пайдошударо бо ном фарқ кунем:
try {
saveData('{1,2,3,4,5}');
} catch (error) {
if (error.name == 'QuotaExceededError') {
alert('ҷой дар нигоҳдорӣ тамом шуд');
}
if (error.name == 'SyntaxError') {
alert('JSON нодуруст');
}
}
Коди функсияи ман saveData-ро нусхабардорӣ кунед,
ва сипас бе нигаристан ба коди ман коркарди хатоҳоиеро,
ки ман тавсиф кардам, амалӣ кунед.
Аз рӯйи навбат вазъияти истисноиеро эҷод кунед,
ки метавонад дар функсияи saveData пайдо шавад.