目录

JavaScript try...catch...finally

示例

这个例子有一个拼写错误尝试块。警报拼写错误。

这个捕获块捕获错误并执行代码来处理它:

<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语句定义自定义错误。

两个都catchfinally是可选的,但您必须使用其中之一。

笔记

使用尝试抓住,让您控制程序流程并生成自定义错误消息。

也可以看看:

JavaScript 抛出异常

JavaScript 错误对象

JavaScript 错误教程


语法

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