如何在 JavaScript 中抛出错误?

2025年2月15日 | 阅读 4 分钟

强大的编程开发中,如何处理错误是一个关键部分。抛出错误是处理和响应 JavaScript 代码中意外情况的一种方式。了解如何抛出错误的编码人员可以开发出更易于使用和维护的代码。

为什么要抛出错误?

抛出错误可以让你做到以下几点:

  • 通过抛出错误,你可以停止代码的正常执行,并告知其他人发生了意料之外的事情。
  • 抛出错误时,可以包含一条解释发生错误原因或代码错误的消息。
  • 通过使用 try...catch 块来捕获抛出的错误并进行处理,你可以确保应用程序能够优雅地失败或正常工作。

抛出错误语句:throw

要在 JavaScript 中抛出错误,请使用 throw 语句。语法非常简单:

抛出一个基本错误

这是一个基本错误的基本示例:

在此示例中,会创建一个 Error 对象实例,然后抛出它,并附带消息“Something went wrong!”(出错了!)。

使用自定义错误类型

虽然在 JavaScript 中最常抛出的错误类型是 Error 对象,但还有许多其他内置错误类型可能对更具体的错误处理很有用:

  • TypeError
  • 语法错误
  • ReferenceError
  • RangeError
  • URIError

例如

通过继承 Error 类,你还可以创建自定义的错误类型。

条件性地抛出错误

在某些情况下,错误消息通常会在特定条件下抛出。作为一个简单的例子,请看下面的示例:

代码

输出

 
2
Cannot divide by zero!   

在这种情况下,尝试除以零会导致 divide 函数返回一个错误。try...catch 块会识别到这个问题,然后将错误消息记录到控制台。

错误传播

错误可能会沿着调用堆栈向上传播,直到被错误处理程序捕获。例如,考虑以下代码:

代码

输出

 
Error in functionB   

在此示例的函数 B 中抛出的错误会传递到函数 A,并被那里的 try...catch 块捕获。

Try、catch、finally 关键字

finally 块可以省略;无论是否抛出错误,它都会运行。它对于清理资源或完成无论是否发生错误都需要完成的任务很有用。

代码

输出

 
Something went wrong
This will always run   

示例

让我们看一个示例代码,了解不同类型的错误及其处理方法。

代码

输出

 
 Throwing generic error:
Caught a generic error: Error - This is a generic error!
Execution in finally block.

Throwing type error:
Caught a type error: TypeError - This is a type error!
Execution in finally block.

Throwing range error:
Caught a range error: RangeError - This is a range error!
Execution in finally block.

Throwing custom error:
Caught a custom error: CustomError - This is a custom error!
Execution in finally block.

Throwing none error:
No error thrown.
Execution in finally block.   

结论

在 JavaScript 中,抛出错误是处理异常情况和确保代码稳定合理的强大机制。通过理解如何使用 throw 语句、自定义错误类型和 try...catch 块,你可以构建更可靠的 JavaScript 代码。为了给应用程序中出现的问题提供进一步的上下文,请记住始终包含有意义的错误消息,并考虑创建自定义的错误类型。