JavaScript-da Ýalňyşlyklary Geçirmek
JSON önümi meseleleri üçin catch bloguny gözden geçireliň:
catch (error) {
if (error.name == 'SyntaxError') {
alert('Nädogry JSON önümi');
} else if (error.name == 'ProductCostError') {
alert('Önümde bahasy ýa-da mukdary ýok');
}
}
Görşiňiz ýaly, biz özümiz görkezen iki sany ýalňyşlygy tutýarys we şoňa nähili bolsa bir reagirisiýa edýäris.
Emma, göz öňünde tutulmadyk başga bir görnüşde ýalňyşlyk ýüze çyksa näme bolar? Bu ýagdaýda
ol hem catch bloguna düşer, ýöne
hiç hili reagirisiýa bolmaz, sebäbi
başga görnüşli ýalňyşlyk hiç bir if şertimize gabat gelmez.
Hiç hili reagirisiýa bolmaz diýenimde, ýagny, hakykatdanam hiç hili: hatda konsola ýalňyşlyk düşmez. Biziň kodymyz diňe ümsümi işlemez.
Şonuň üçin şeýle bir düzgün bar: siziň
kodyňyz diňe özüniň nädip üstesinden geljekdigini bilýän ýalňyşlyklary tutmaly.
Eger ýalňyşlyk belli däl bolsa, onda ony throw ýardamy bilen geçirmek
gerek. Bu ýagdaýda
ýokardan ony has bilenli biri tutar
ýa-da ýalňyşlyk konsolda ýalňyş hökmünde peýda bolar.
Geliň kodymyzy düzeliň:
catch (error) {
if (error.name == 'SyntaxError') {
alert('Nädogry JSON önümi');
} else if (error.name == 'ProductCostError') {
alert('Önümde bahasy ýa-da mukdary ýok');
} else {
throw error; // ýalňyşlygy indi geçirýäris
}
}
Aşakdaky kod berlen:
try {
let arr = JSON.parse(json);
for (let i = 0; i < arr.length; i++) {
localStorage.setItem(i, arr[i]);
}
} catch (error) {
if (error.name == 'QuotaExceededError') {
alert('amatynda ýer gutardy');
}
if (error.name == 'SyntaxError') {
alert('nädogry JSON');
}
}
Bu kodda nämä ýalňyş? Ony has gowy boljak ýaly düzeliň.