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 функциясида
юзага келиши мумкин бўлган исключий вазиятларни
яратинг.