Ужыванне тыпаў выключэнняў у 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.