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¢²»»áÔÚËùÓÐä¯ÀÀÆ÷Öй¤×÷¡£

VUE