这个例子有一个拼写错误尝试块。警报拼写错误。
这个捕获块捕获错误并执行代码来处理它:
<p id="demo"></p>
<script>
try {
adddlert("Welcome guest!");
}
catch(err) {
document.getElementById("demo").innerHTML = err.message;
}
</script>
亲自试一试 »
下面有更多示例。
当错误发生时,JavaScript 将停止并生成错误消息。
其技术术语是:JavaScript抛出异常。
JavaScript 创建一个错误对象有两个属性:姓名和信息。
这个try...catch...finally
语句组合可以在不停止 JavaScript 的情况下处理错误。
这个try
语句定义要运行(尝试)的代码块。
这个catch
语句定义了一个代码块来处理任何错误。
这个finally
语句定义了一个无论结果如何都运行的代码块。
这个throw
语句定义自定义错误。
两个都catch
和finally
是可选的,但您必须使用其中之一。
try {
tryCode - Code block to run
}
catch(
err) {
catchCode - Code block to handle errors
}
finally {
finallyCode - Code block to be executed regardless of the try result
}
Parameter | Description |
tryCode | Required. Code block to be tested while executing. |
err | A local reference to the error object. |
catchCode | Optional. Code block to execute if an error occurs. |
finallyCode | Optional. Code block to execute regardless of the try result |
此示例检查输入。
如果值错误,则会抛出异常(err):
<p>Please input a number between 5 and 10:</p>
<input id="demo" type="text">
<button type="button" onclick="myFunction()">Test Input</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 "is Empty";
if(isNaN(x)) throw "not a number";
if(x > 10) throw "too high";
if(x < 5) throw "too low";
}
catch(err) {
message.innerHTML = "Input " + err;
}
}
</script>
亲自试一试 »
这个最后无论 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 "Too high";
if(x < 5) throw "Too low";
}
catch(err) {
message.innerHTML = "Error: " + err + ".";
}
finally {
document.getElementById("demo").value = "";
}
}
亲自试一试 »
try...catch
是 ECMAScript3 (ES3) 功能。
所有浏览器均完全支持 ES3 (JavaScript 1999):
Chrome | Edge | Firefox | Safari | Opera | IE |
Yes | Yes | Yes | Yes | Yes | Yes |
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!