JavaScript ´íÎó - Throw ºÍ Try to Catch
try Óï¾äʹÄúÄܹ»²âÊÔ´úÂë¿éÖеĴíÎó¡£
catch Óï¾äÔÊÐíÄú´¦Àí´íÎó¡£
throw Óï¾äÔÊÐíÄú´´½¨×Ô¶¨Òå´íÎó¡£
finally ʹÄúÄܹ»Ö´ÐдúÂ룬ÔÚ try ºÍ catch Ö®ºó£¬ÎÞÂÛ½á¹ûÈçºÎ¡£
´íÎó×ܻᷢÉú£¡
µ±Ö´ÐÐ JavaScript ´úÂëʱ£¬»á·¢Éú¸÷ÖÖ´íÎó¡£
´íÎó¿ÉÄÜÊdzÌÐòÔ±µÄ±àÂë´íÎó£¬ÓÉ´íÎóÊäÈëÒýÆðµÄ´íÎ󣬻òÕßÓÉÓÚÆäËû²»¿ÉÔ¤¼ûµÄÎÊÌâ¡£
ʵÀý
ÔÚ±¾ÀýÖУ¬ÎÒÃÇͨ¹ý adddlert ±àд¾¯¸æ´úÂëÀ´¹ÊÒâÖÆÔìÁËÒ»¸ö´íÎó£º
<p id="demo"></p> <script> try { adddlert("»¶Ó·ÃÎÊ£¡"); } catch(err) { document.getElementById("demo").innerHTML = err.message; } </script>
JavaScript ½« adddlert ²¶»ñΪһ¸ö´íÎó£¬È»ºóÖ´ÐдúÂëÀ´´¦Àí¸Ã´íÎó¡£
JavaScript try ºÍ catch
try Óï¾äÔÊÐíÄú¶¨ÒåÒ»¸ö´úÂë¿é£¬ÒÔ±ãÔÚÖ´ÐÐʱ¼ì²â´íÎó¡£
catch Óï¾äÔÊÐíÄ㶨ÒåÒ»¸öÒªÖ´ÐеĴúÂë¿é£¬Èç¹û try ´úÂë¿éÖз¢Éú´íÎó¡£
JavaScript Óï¾ä try ºÍ catch ³É¶Ô³öÏÖ£º
try { ¹©²âÊԵĴúÂë¿é } catch(err) { ´¦Àí´íÎóµÄ´úÂë¿é }
JavaScript Å׳ö´íÎó
µ±·¢Éú´íÎóʱ£¬JavaScript ͨ³£»áÍ£Ö¹²¢²úÉú´íÎóÏûÏ¢¡£
¼¼ÊõÊõÓïÊÇÕâÑùÃèÊöµÄ£ºJavaScript ½«Å׳öÒì³££¨Å׳ö´íÎ󣩡£
JavaScript ʵ¼ÊÉϻᴴ½¨´øÓÐÁ½¸öÊôÐ﵀ Error ¶ÔÏó£ºname ºÍ message¡£
throw Óï¾ä
throw Óï¾äÔÊÐíÄú´´½¨×Ô¶¨Òå´íÎó¡£
´Ó¼¼ÊõÉϽ²ÄúÄܹ»Å׳öÒì³££¨Å׳ö´íÎ󣩡£
Òì³£¿ÉÒÔÊÇ JavaScript ×Ö·û´®¡¢Êý×Ö¡¢²¼¶û»ò¶ÔÏó£º
throw "Too big"; // Å׳öÎı¾ throw 500; //Å׳öÊý×Ö
Èç¹û°Ñ throw Óë try ºÍ catch һͬʹÓ㬾ͿÉÒÔ¿ØÖƳÌÐòÁ÷²¢Éú³É×Ô¶¨Òå´íÎóÏûÏ¢¡£
ÊäÈëÑéÖ¤°¸Àý
±¾Àý»á¼ì²éÊäÈë¡£Èç¹ûÖµÊÇ´íÎóµÄ£¬½«Å׳öÒì³££¨err£©¡£
¸ÃÒì³££¨err£©±» catch Óï¾ä²¶»ñ²¢ÏÔʾһÌõ×Ô¶¨ÒåµÄ´íÎóÏûÏ¢£º
<!DOCTYPE html> <html> <body> <p>ÇëÊäÈë 5 - 10 Ö®¼äµÄÊý×Ö£º</p> <input id="demo" type="text"> <button type="button" onclick="myFunction()">²âÊÔÊäÈë</button> <p id="message"></p> <script> function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "¿ÕµÄ"; if(isNaN(x)) throw "²»ÊÇÊý×Ö"; x = Number(x); if(x < 5) throw "̫С"; if(x > 10) throw "Ì«´ó"; } catch(err) { message.innerHTML = "ÊäÈëÊÇ " + err; } } </script> </body> </html>
HTML ÑéÖ¤
ÒÔÉÏ´úÂë½ö½öÊÇÒ»¸öÀý×Ó¡£
ÏÖ´úä¯ÀÀÆ÷ͨ³£»á½áºÏ JavaScript ÓëÄÚÖÃµÄ HTML ÑéÖ¤£¬Í¨¹ýʹÓÃÔÚ HTML ÊôÐÔÖж¨ÒåµÄÔ¤¶¨ÒåµÄÑéÖ¤¹æÔò£º
<input id="demo" type="number" min="5" max="10" step="1">
Äú½«ÔÚ±¾½Ì³ÌÉÔºóµÄÕ½Úѧµ½¸ü¶àÓÐ¹Ø±íµ¥ÑéÖ¤µÄ֪ʶ¡£
finally Óï¾ä
finally Óï¾äÔÊÐíÄúÔÚ try ºÍ catch Ö®ºóÖ´ÐдúÂ룬ÎÞÂÛ½á¹û£º
try { ¹©²âÊԵĴúÂë¿é } catch(err) { ´¦Àí´íÎóµÄ´úÂë¿é } finally { ÎÞÂÛ try / catch ½á¹ûÈçºÎ¶¼Ö´ÐеĴúÂë¿é }
ʵÀý
function myFunction() { var message, x; message = document.getElementById("message"); message.innerHTML = ""; x = document.getElementById("demo").value; try { if(x == "") throw "ÊǿյÄ"; if(isNaN(x)) throw "²»ÊÇÊý×Ö"; x = Number(x); if(x > 10) throw "Ì«´ó"; if(x < 5) throw "̫С"; } catch(err) { message.innerHTML = "´íÎó£º" + err + "."; } finally { document.getElementById("demo").value = ""; } }
Error ¶ÔÏó
JavaScript ÓµÓе±´íÎó·¢ÉúʱÌṩ´íÎóÐÅÏ¢µÄÄÚÖà error ¶ÔÏó¡£
error ¶ÔÏóÌṩÁ½¸öÓÐÓõÄÊôÐÔ£ºname ºÍ message¡£
Error ¶ÔÏóÊôÐÔ
ÊôÐÔ | ÃèÊö |
---|---|
name | ÉèÖûò·µ»Ø´íÎóÃû |
message | ÉèÖûò·µ»Ø´íÎóÏûÏ¢£¨Ò»Ìõ×Ö·û´®£© |
Error Name Values
error µÄ name ÊôÐÔ¿É·µ»ØÁù¸ö²»Í¬µÄÖµ£º
´íÎóÃû | ÃèÊö |
---|---|
EvalError | ÒÑÔÚ eval() º¯ÊýÖз¢ÉúµÄ´íÎó |
RangeError | ÒÑ·¢Éú³¬³öÊý×Ö·¶Î§µÄ´íÎó |
ReferenceError | ÒÑ·¢Éú·Ç·¨ÒýÓà |
SyntaxError | ÒÑ·¢ÉúÓï·¨´íÎó |
TypeError | ÒÑ·¢ÉúÀàÐÍ´íÎó |
URIError | ÔÚ encodeURI() ÖÐÒÑ·¢ÉúµÄ´íÎó |
ÏÂÃæÎªÄúÏê½âÕâÁù¸ö²»Í¬µÄÖµ¡£
Eval ´íÎó
EvalError ָʾ eval() º¯ÊýÖеĴíÎó¡£
¸üа汾µÄ JavaScript ²»»áÅ׳öÈκΠEvalError¡£ÇëʹÓà SyntaxError ´úÌæ¡£
·¶Î§´íÎó
RangeError »áÔÚÄúʹÓÃÁ˺Ϸ¨ÖµµÄ·¶Î§Ö®ÍâµÄÊý×ÖʱÅ׳ö¡£
ÀýÈ磺Äú²»Äܽ«Êý×ÖµÄÓÐЧλÊýÉèÖÃΪ 500¡£
ʵÀý
var num = 1;
try {
num.toPrecision(500); // ÊýÎÞ·¨ÓµÓÐ 500 ¸öÓÐЧÊý
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
ÒýÓôíÎó
¼ÙÈçÄúʹÓã¨ÒýÓã©ÁËÉÐδÉùÃ÷µÄ±äÁ¿£¬Ôò ReferenceError »á±»Å׳ö£º
ʵÀý
var x;
try {
x = y + 1; // y ÎÞ·¨±»ÒýÓã¨Ê¹Óã©
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
Óï·¨´íÎó
¼ÙÈçÄú¼ÆËã´øÓï·¨´íÎóµÄ´úÂ룬»á SyntaxError ±»Å׳ö£º
ʵÀý
try {
eval("alert('Hello)"); // ȱÉÙ ' »á²úÉú´íÎó
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
ÀàÐÍ´íÎó
¼ÙÈçÄúʹÓõÄÖµ²»ÔÚÆÚÍûÖµµÄ·¶Î§Ö®ÄÚ£¬Ôò TypeError ±»Å׳ö£º
ʵÀý
var num = 1;
try {
num.toUpperCase(); // ÄúÎÞ·¨½«Êý×Öת»»Îª´óд
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
URI ´íÎó
¼ÙÈçÄúÔÚ URI º¯ÊýÖÐʹÓ÷Ƿ¨×Ö·û£¬Ôò URIError ±»Å׳ö£º
ʵÀý
try {
decodeURI("%%%"); // ÄúÎÞ·¨¶ÔÕâЩ°Ù·ÖºÅ½øÐÐ URI ±àÂë
}
catch(err) {
document.getElementById("demo").innerHTML = err.name;
}
·Ç±ê×¼µÄ Error ¶ÔÏóÊôÐÔ
Mozilla ºÍ Microsoft ¶¨ÒåÁ˷DZê×¼µÄ error ¶ÔÏóÊôÐÔ£º
- fileName (Mozilla)
- lineNumber (Mozilla)
- columnNumber (Mozilla)
- stack (Mozilla)
- description (Microsoft)
- number (Microsoft)
ÇëÎðÔÚ¹«¹²ÍøÕ¾Ê¹ÓÃÕâЩÊôÐÔ¡£ËüÃDz¢²»»áÔÚËùÓÐä¯ÀÀÆ÷Öй¤×÷¡£