JavaScript try/catch/finally 语句
try/catch/finally 语句用于处理代码中可能出现的错误信息
浏览器支持
支持 | 支持 | 支持 | 支持 | 支持 |
语法
try { // tryCode - 尝试执行代码块 } catch( err) { // catchCode -捕获错误的代码块 } finally { // finallyCode - 无论 try / catch 结果如何都会执行的代码块 }
参数
参数 | 描述 |
---|---|
tryCode | 必须。检查是否有错误的代码块 |
err | 必须(如果使用 catch)。指定局部变量应用的错误。该变量可以引用 Error 对象 (包含发生的错误信息,如 "'addlert' 没有定义")。如果异常通过 throw 语句创建, 该变量引用了为在throw语句中指定的对象 |
catchCode | 可选 如果 try 语句发生错误执行的代码块 如果 try 语句没发生错误该代码不会执行 |
finallyCode | 可选。无论 try / catch 的结果如何都会执行 |
说明
错误可能是语法错误,通常是程序员造成的编码错误或错别字
也可能是拼写错误或语言中缺少的功能 ( 可能由于浏览器差异 )
try 语句允许我们定义在执行时进行错误测试的代码块
catch 语句允许我们定义当 try 代码块发生错误时,所执行的代码块
finally 语句在 try 和 catch 之后无论有无异常都会执行
catch 和 finally 语句都是可选的,但在使用 try 语句时必须至少使用一个
当错误发生时, JavaScript 会停止执行,并生成一个错误信息,这时可以使用 throw 语句 来创建自定义消息(抛出异常)
如果将 throw 和 try 、 catch 一起使用,就可以控制程序输出的错误信息
更多关于 JavaScript 错误的知识,可以访问我们的 JavaScript 错误
范例
我们故意在 try 块的代码中写了一个错字
本应该提醒 "欢迎光临!",但弹出的是拼写错误信息
catch 块会捕捉到 try 块中的错误,并执行代码来处理它
try { adddlert("欢迎光临!"); } catch(err) { document.getElementById("demo").innerHTML = err.message; }
范例
检测输入的值是否错误,如果错误则抛出异常
异常通过 catch 语句捕获,并输出自定义信息
<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 "不是一个数字"; if(x>10) throw "太大了"; if(x<5)throw "太小了"; } catch(err){ message.innerHTML="输入的值"+err; } } </script>
范例
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 "不是一个数字"; if(x > 10) throw "太大"; if(x < 5) throw "太小"; } catch(err) { message.innerHTML = "输入的值 " + err; } finally { document.getElementById("demo").value = ""; } }
相关页面
JavaScript 基础教程: JavaScript 错误
JavaScript 参考手册: JavaScript throw 语句