JavaScript හි දෝෂ උත්ක්ෂේප කිරීම
JSON නිෂ්පාදන කාර්යයක සඳහා catch බ්ලොක් එක සලකා බලමු:
catch (error) {
if (error.name == 'SyntaxError') {
alert('නිෂ්පාදනයේ JSON අනුකූල නොවේ');
} else if (error.name == 'ProductCostError') {
alert('නිෂ්පාදනයට මිල හෝ ප්රමාණය නොමැත');
}
}
ඔබට පෙනෙන පරිදි, අපි අප විසින් සැලසුම් කරන ලද දෝෂ දෙකක් අල්ලාගෙන ඒ සඳහා ප්රතිචාර දක්වන්නෙමු.
නමුත් අප විසින් අනපේක්ෂිත වෙනත් වර්ගයේ දෝෂයක් ඇති වුවහොත් කුමක් සිදුවේද? මෙම අවස්ථාවේදී,
එය catch බ්ලොක් එකට ඇතුළු වනු ඇත, නමුත්
වෙනත් වර්ගයක දෝෂයක් අපගේ කිසිදු 'if' කොන්දේසියකට අයත් නොවන බැවින් මේ සඳහා කිසිදු ප්රතිචාරයක් සිදු නොවේ.
මම කිසිදු ප්රතිචාරයක් සිදු නොවන බව කියන විට, මා අදහස් කරන්නේ සැබවින්ම කිසිවක් නොවේ: එය කොන්සෝලයට දෝෂයක් පෙන්වා දීමට පවා නොහැකි වනු ඇත. අපගේ කේතය සරලව නිශ්ශබ්දව ක්රියා නොකරනු ඇත.
එබැවින් පහත සඳහන් රීතිය පවතී: ඔබගේ
කේතය සමඟ කටයුතු කරන්නේ කෙසේදැයි දන්නා දෝෂ පමණක් අල්ලා ගත යුතුය.
දෝෂය නොදන්නා එකක් නම්, එය throw භාවිතයෙන් තවදුරටත් උත්ක්ෂේප කළ යුතුය.
මෙම අවස්ථාවේදී
එය ඉහළින් වඩාත් දැනුම් සහිත අයෙකු විසින් අල්ලා ගනු ඇත
නැතහොත් දෝෂය කොන්සෝලයට දෝෂයක් ලෙස පෙන්වනු ඇත.
අපගේ කේතය නිවැරදි කරමු:
catch (error) {
if (error.name == 'SyntaxError') {
alert('නිෂ්පාදනයේ JSON අනුකූල නොවේ');
} else if (error.name == 'ProductCostError') {
alert('නිෂ්පාදනයට මිල හෝ ප්රමාණය නොමැත');
} else {
throw error; // දෝෂය තවදුරටත් උත්ක්ෂේප කරන්න
}
}
පහත කේතය ලබා දී ඇත:
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('ගබඩාවේ අවකාශය අවසන් විය');
}
if (error.name == 'SyntaxError') {
alert('අනුකූල නොවන JSON');
}
}
මෙම කේතයේ ඇති දෝෂය කුමක්ද? එය වඩාත් හොඳ කේතයකට නිවැරදි කරන්න.