返回

JS 维护性技巧:抛出错误,说人话,给足信息!

前端

引言

JavaScript 因其错误消息稀少且含糊不清而臭名昭著。这使得调试问题变得更加困难,特别是当错误消息没有提供有关错误原因的具体信息时。

例如,以下错误消息没有任何帮助:

TypeError: Cannot read property 'length' of undefined

这个错误消息并没有告诉我们错误发生的原因或如何解决它。

为了让 JavaScript 代码更易于维护,我们应该编写更具信息量和可操作性的错误消息。这将有助于我们更快地找到并修复错误。

如何编写更具信息量的错误消息

编写更具信息量的错误消息有几种方法。

  • 使用更具体的错误消息。 而不是使用通用错误消息,我们可以使用更具体的错误消息来错误的原因。例如,我们可以使用以下错误消息来替换上面的示例:
TypeError: Cannot read property 'length' of undefined
Error: The input parameter 'array' must be an array.

这个错误消息更具体,因为它告诉我们错误的原因是输入参数 array 不是数组。

  • 包括更多上下文信息。 在错误消息中包含更多上下文信息可以帮助我们更好地理解错误的原因。例如,我们可以使用以下错误消息来替换上面的示例:
Error: The input parameter 'array' must be an array.
Error: The input parameter 'array' must be an array. This error occurred in the `foo()` function on line 123 of the `bar.js` file.

这个错误消息包含更多上下文信息,因为它告诉我们错误发生在 foo() 函数的第 123 行 bar.js 文件中。

  • 提供有关如何解决错误的建议。 在错误消息中提供有关如何解决错误的建议可以帮助我们更快地修复错误。例如,我们可以使用以下错误消息来替换上面的示例:
Error: The input parameter 'array' must be an array.
Error: The input parameter 'array' must be an array. To fix this error, you can pass an array to the `foo()` function.

这个错误消息提供了有关如何解决错误的建议,因为它告诉我们可以通过将数组传递给 foo() 函数来修复错误。

如何处理错误

在 JavaScript 代码中处理错误有几种方法。

  • 使用 try...catch 语句。 try...catch 语句可用于捕获错误并执行错误处理代码。例如,我们可以使用以下代码来捕获错误并将其记录到控制台:
try {
  // Code that may throw an error
} catch (error) {
  console.error(error);
}
  • 使用 throw 语句。 throw 语句可用于显式抛出错误。这对于抛出自定义错误很有用。例如,我们可以使用以下代码来抛出自定义错误:
throw new Error('This is a custom error.');
  • 使用错误处理库。 有许多 JavaScript 错误处理库可供使用。这些库可以帮助我们更轻松地捕获和处理错误。例如,我们可以使用以下库来处理错误:
import { Sentry } from '@sentry/browser';

Sentry.init({
  dsn: 'https://example.com/sentry',
});

try {
  // Code that may throw an error
} catch (error) {
  Sentry.captureException(error);
}

结语

编写更具信息量和可操作性的错误消息,并使用适当的技术来处理错误,对于维护 JavaScript 代码非常重要。这将有助于我们更快地找到并修复错误,从而使我们的代码更加健壮和可靠。