Uitsonderings Gooi in JavaScript
Kom ons kyk na die catch blok van die JSON produk taak:
catch (error) {
if (error.name == 'SyntaxError') {
alert('Ongeldige JSON produk');
} else if (error.name == 'ProductCostError') {
alert('Produk het geen prys of hoeveelheid nie');
}
}
Soos jy kan sien, vang ons twee uitsonderings wat ons beplan het
en reageer op een of ander manier.
Maar wat gebeur as daar 'n onvoorziene
uitsondering van 'n ander tipe ontstaan? In hierdie geval
sal dit ook in die catch blok beland, maar
daar sal geen reaksie wees nie, aangesien
die uitsondering met 'n ander tipe eenvoudig nie sal val
in een van ons if-statements nie.
Wanneer ek sê daar sal geen reaksie wees nie, bedoel ek, regtig geen: selfs nie 'n fout in die konsole sal verskyn nie. Ons kode sal eenvoudig stil wees en nie werk nie.
Daarom bestaan die volgende reël: jou
kode moet net die uitsonderings vang waarmee
dit weet hoe om te hanteer. As die uitsondering
nie bekend is nie, moet dit verder gegooi word
met behulp van throw. In hierdie geval
sal iemand hoër op wat meer ingelig is dit vang
of die uitsondering sal as 'n fout in die konsole verskyn.
Kom ons reg ons kode:
catch (error) {
if (error.name == 'SyntaxError') {
alert('Ongeldige JSON produk');
} else if (error.name == 'ProductCostError') {
alert('Produk het geen prys of hoeveelheid nie');
} else {
throw error; // gooi uitsondering verder
}
}
Die volgende kode word gegee:
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('plek in stoor op');
}
if (error.name == 'SyntaxError') {
alert('ongeldige JSON');
}
}
Wat is fout met hierdie kode? Maak dit reg met 'n beter weergawe.