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