跳到主要内容

JavaScript throw 语句

提示
  1. 抛出自定义异常:JavaScript 中的 throw 语句用于创建并抛出用户自定义的异常。例如,可以使用 throw 语句处理某些特定情况下的异常,如数字除以零时视为异常。
  2. throw 语句的语法throw 语句的基本语法为 throw expression;,其中 expression 是指定的异常值,可以是字符串、布尔值、数字或对象。
  3. 结合 try...catch 使用throw 语句常与 try...catch 语句结合使用。当 throw 语句执行时,会立即退出当前代码块,并跳转到 catch 代码块处理异常。throw 语句后的代码将不会执行。

在之前的教程中,你学习了如何使用 JavaScript try..catch 语句 处理异常。try 和 catch 语句以 JavaScript 提供的标准方式处理异常。然而,你可以使用 throw 语句来传递用户定义的异常。

在 JavaScript 中,throw 语句处理用户定义的异常。例如,如果某个数字除以 0,并且你需要将 Infinity 视为一个异常,你可以使用 throw 语句来处理该异常。

JavaScript throw 语句

throw 语句的语法是:

throw 表达式;

这里的 表达式 指定了异常的值。

例如,

const number = 5;
throw number / 0; // 当除以 0 时生成一个异常

注意:表达式可以是字符串、布尔值、数字或对象值。

JavaScript throw 结合 try...catch 使用

try...catch...throw 的语法是:

try {
// try 代码块
throw 异常;
} catch (error) {
// catch 代码块
}

注意:当执行 throw 语句时,它会退出代码块并进入 catch 代码块。并且 throw 语句以下的代码不会执行。

示例 1:try...catch...throw 示例

const number = 40;
try {
if (number > 50) {
console.log("成功");
} else {
// 用户定义的 throw 语句
throw new Error("数字太低");
}

// 如果执行了 throw,以下代码将不会执行
console.log("你好");
} catch (error) {
console.log("捕获到一个错误");
console.log("错误信息:" + error);
}

输出

捕获到一个错误
错误信息:Error: 数字太低

在上面的程序中,检查了一个条件。如果数字小于 51,则抛出一个错误。并且该错误是使用 throw 语句抛出的。

throw 语句将字符串 数字太低 指定为表达式。

注意:你也可以使用其他内置错误构造函数表示标准错误:TypeErrorSyntaxErrorReferenceErrorEvalErrorInternalErrorRangeError

例如,

throw new ReferenceError("这是一个引用错误");

重新抛出异常

你也可以在 catch 代码块内使用 throw 语句重新抛出异常。例如,

const number = 5;
try {
// 用户定义的 throw 语句
throw new Error("这是 throw");
} catch (error) {
console.log("捕获到一个错误");
if (number + 8 > 10) {
// 处理异常的语句
console.log("错误信息:" + error);
console.log("错误已解决");
} else {
// 无法处理异常
// 重新抛出异常
throw new Error("值太低");
}
}

输出

捕获到一个错误
错误信息:Error: 这是 throw
错误已解决

在上述程序中,try 代码块内使用了 throw 语句来捕获异常。如果 catch 代码块无法处理异常,则在 catch 代码块中重新抛出 throw 语句。

这里,catch 代码块处理了异常,没有发生错误。因此,throw 语句没有被重新抛出。

如果错误没有被 catch 代码块处理,throw 语句将会被重新抛出,错误信息为 Uncaught Error: 值太低。