⊗jsSpExcAT 144 of 294 menu

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

swsvdeuzcbn