JavaScript 中的错误处理

2025-06-10

JavaScript 中的错误处理

运行 JavaScript 代码时,可能会发生许多错误。错误的输入、未定义的变量、函数以及不正确的语法都可能导致错误。如果我们不处理这些错误,它们会阻止代码的进一步执行,从而导致糟糕的用户体验和用户不满。在本文中,我们将简要介绍如何处理发生的错误,以便更轻松地进行调试并为用户提供有意义的信息。

trycatchfinally

大多数错误发生在处理用户输入或其他来源的数据时,例如读取并发送数据到服务器,或运行异步代码。如果在执行过程中发生错误,JavaScript 将停止并创建一个错误对象。该对象称为throw an exception。Try
-catch 语句允许检查代码块中定义的代码是否存在错误try,如果检测到错误,它将跳过后续语句并跳转到该catch代码块来处理错误。

try {
  // x is not defined in the scope and will throw an exception
  console.log(x)
  // this statement will be skipped
  console.log('Last block call');
} catch(error) {
  console.error(error);
}

在上面的例子中,我们尝试执行两个语句,其中第一个语句应该记录未定义变量x。默认情况下,JavaScript 会抛出异常并跳转到catch代码块。catch将保存该异常的值。为了便于调试,请使用console.error而不是console.log,因为它会生成错误消息并将其添加到页面生成的错误列表中。
使用 try-catch 时,如果发生错误,只有try代码块语句会停止执行。try-catch 之外的代码不会冻结并继续运行。

虽然 try-catch 总是会一起出现,但还有一个额外的finally代码块,无论是否抛出异常,它都会执行代码。你通常会用它来关闭连接或流,以便在发生错误时优雅地释放代码块中的代码。

try {
  // ...
} catch(error) {
  // ...
} finally {
  closeConnection();
}

throw陈述

throw语句允许您创建自定义错误消息。语句执行时,必须指定一个值,该值可以是任意类型:

throw 7; // Number type
throw 'Invalid string'; // String type
throw false; // Boolean type
throw { name: 'SyntaxError'; message: 'Unknown character' }; // Object type
throw new Error('Typo'); // Error object constructor

throw在 try-catch 语句中使用时,throw可以在代码块中访问触发的异常值catch
如果throw语句未得到处理(例如,在 try-catch 中),则会停止 JavaScript 执行。

Error目的

Error对象内置于 JavaScript 错误构造函数中,会在错误发生时自动调用,也可以手动生成并抛出。它包含三个属性:namemessagestack
使用内置Error对象可以更轻松地进行调试,因为它会追溯到抛出错误之前的调用堆栈,以便您可以查看导致问题的代码行。
大多数自动生成的、已抛出的命名错误包括:

  • SyntaxError- 语法错误,例如代码中的逗号放错了位置
  • TypeError- 类型连接错误,即运行类型不存在的方法'str'.toFix()
  • ReferenceError- 引用未声明的函数或变量时

要使用构造函数,我们用new变量调用它并指定一条消息作为参数:

try {
  throw new Error('Invalid input');
} catch(error) {
  console.error('Name:', error.name); // Name: Error
  console.error('Message:', error.message); // Message: Invalid input
}

结论

这就是 JavaScript 中错误处理的基础知识。错误终究会发生,知道如何优雅地处理错误可以让调试更加轻松,并带来更好的用户体验。

鏂囩珷鏉ユ簮锛�https://dev.to/spukas/error-handling-in-javascript-56c8
PREV
使用纯 JavaScript 实现图像延迟加载
NEXT
useEffect() 的 4 种方法