本文档概述了 JavaScript 应用程序中错误处理的最佳实践,重点介绍了如何正确捕获、处理和响应错误。妥善处理错误对于构建能够优雅地从故障中恢复并为用户和开发人员提供有意义反馈的健壮应用程序至关重要。
本节涵盖了使用 try/catch 块进行同步错误处理以及使用 Promise 进行异步错误处理,但不包括测试错误条件,这将在 测试 中讨论。
JavaScript 提供了几种错误处理机制,包括用于同步代码的 try/catch 结构以及用于异步操作的基于 Promise 的错误处理。妥善处理错误可确保您的应用程序能够
下图说明了 JavaScript 中错误处理的基本流程
抛出的错误是有益的,因为它们
不要将错误视为需要隐藏的问题,而应将其视为有助于提高应用程序可靠性的宝贵信号。
错误处理中最重要的原则是永远不要忽略错误。如果您捕获了错误,您应该始终对它进行有意义的处理。
反模式:忽略已捕获的错误
捕获错误而不进行妥善处理会阻止您修复问题或适当地做出响应。
推荐方法:妥善处理错误
捕获错误时,请实施适当的错误处理策略
console.error() 而不是 console.log() 以获得更好的可见性同样的原则也适用于基于 Promise 的代码——始终妥善处理拒绝。
反模式:不当的 Promise 错误处理
推荐方法:妥善的 Promise 错误处理
同步代码使用 try/catch 机制来处理错误。每当执行可能引发错误的aught 代码时,都应使用此模式。
JavaScript 提供了两种处理异步错误的主要模式
虽然在存储库的错误处理部分没有明确说明,但 async/await 是处理异步操作及其错误的现代方法。它结合了 Promise 的优点和同步代码的可读性。
来源: README.md2045-2078 README.md1956-1999
处理错误时,您应根据错误的上下文和严重性实施一项或多项这些策略
| 策略 | 目的 | 何时使用 | 示例 |
|---|---|---|---|
| 日志记录 | 记录错误详细信息以供调试 | 始终 | console.error(error) |
| 用户通知 | 告知用户相关错误 | 面向用户的操作 | notifyUserOfError(error) |
| 错误报告 | 将错误发送到监控服务 | 生产环境 | reportErrorToService(error) |
| 恢复 | 尝试恢复或提供后备方案 | 当有替代方案时 | return fallbackValue |
来源: README.md2010-2043 README.md2045-2078
错误处理并非孤立存在——它与其他整洁代码原则相互作用
函数的设计应考虑错误处理
在异步代码中,错误处理尤为重要
.catch() 处理程序附加到 Promise来源: README.md2003-2080 README.md1956-1999
妥善处理错误是 JavaScript 中整洁代码的一个基本方面。遵循这些原则
您可以创建更健壮、更易于维护的应用程序,这些应用程序能够优雅地处理故障并为用户和开发人员提供有价值的反馈。