此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

throw

基线
广泛可用

自 2015年7月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

throw 语句用于抛出用户自定义的异常。当前函数的执行将停止(throw 之后的语句不会被执行),并且控制权将传递给调用堆栈中第一个 catch 块。如果调用函数中没有 catch 块,则程序将终止。

尝试一下

function getRectArea(width, height) {
  if (isNaN(width) || isNaN(height)) {
    throw new Error("Parameter is not a number!");
  }
}

try {
  getRectArea(3, "A");
} catch (e) {
  console.error(e);
  // Expected output: Error: Parameter is not a number!
}

语法

js
throw expression;
expression

抛出表达式。

描述

throw 语句在任何可以使用语句的上下文中都有效。它的执行会产生一个在调用堆栈传播的异常。有关错误冒泡和处理的更多信息,请参阅控制流与错误处理

throw 关键字后面可以跟任何类型的表达式,例如:

js
throw error; // 抛出之前定义的值(例如,在 catch 块中)
throw new Error("Required"); // 抛出一个新的错误对象

在实践中,你抛出的异常应该始终Error 对象或 Error 子类的实例,例如 RangeError。这是因为捕获错误的代码可能期望捕获的值具有一些属性,例如 错误信息。例如,Web API 通常会抛出 DOMException 实例,这些实例继承自 Error.prototype

自动分号补全

语法不允许在 throw 关键字和要抛出的表达式之间出现换行。