JavaScript try...catch...finally
例子
此示例在 **try 块** 中存在一个拼写错误。Alert 被拼写错误。
**catch 块** 捕获错误并执行代码以处理它
<p id="demo"></p>
<script>
try {
adddlert("欢迎客人!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
自己试试 »
以下有更多示例。
描述
当出现 **错误** 时,JavaScript 将 **停止** 并生成错误消息。
注意
这个的专业术语是:JavaScript **抛出异常**。
JavaScript 创建一个 **Error 对象**,它具有两个属性:**name** 和 **message**。
try...catch...finally
语句组合处理错误,而不会停止 JavaScript。
try
语句定义要运行的代码块(要尝试的)。
catch
语句定义一个代码块来处理任何错误。
finally
语句定义一个无论结果如何都要运行的代码块。
throw
语句定义一个自定义错误。
**catch** 和 **finally** 都是可选的,但必须使用其中一个。
注意
使用 **throw** 与 **try** 和 **catch**,可以控制程序流程并生成自定义错误消息。
另请参见
语法
try {
tryCode - 要运行的代码块
}
catch(err) {
catchCode - 处理错误的代码块
}
finally {
finallyCode - 无论 try 结果如何都要执行的代码块
}
参数
参数 | 描述 |
tryCode | 必需的。 在执行时要测试的代码块。 |
err | 对错误对象的本地引用。 |
catchCode | 可选的。 如果发生错误要执行的代码块。 |
finallyCode | 可选的。 无论 try 结果如何都要执行的代码块 |
更多示例
此示例检查输入。
如果值错误,则抛出异常(err)
<p>请输入 5 到 10 之间的数字:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">测试输入</button>
<p id="message"></p>
<script>
function myFunction() {
const message = document.getElementById("message");
message.innerHTML = "";
let 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 结果如何之后执行代码
function myFunction()
const message = document.getElementById("message");
message.innerHTML = "";
let x = document.getElementById("demo").value;
try {
if(x == "") throw "Empty";
if(isNaN(x)) throw "Not a number";
if(x > 10) throw "太高了";
if(x < 5) throw "太低了";
}
catch(err) {
message.innerHTML = "错误: " + err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
自己试试 »
浏览器支持
try...catch
是 ECMAScript3 (ES3) 的特性。
ES3 (JavaScript 1999) 在所有浏览器中均得到完全支持
Chrome | Edge | Firefox | Safari | Opera | IE |
是 | 是 | 是 | 是 | 是 | 是 |