简介

最后更新于:2022-04-01 15:55:07

> NodeJS的错误处理让人痛苦,在很长的一段时间里,大量的错误被放任不管。但是要想建立一个健壮的Node.js程序就必须正确的处理这些错误,而且这并不难学。如果你实在没有耐心,那就直接绕过长篇大论跳到“总结”部分吧。 [原文](https://www.joyent.com/developers/node/design/errors) 这篇文章会回答NodeJS初学者的若干问题: * 我写的函数里什么时候该抛出异常,什么时候该传给callback, 什么时候触发`EventEmitter`等等。 * 我的函数对参数该做出怎样的假设?我应该检查更加具体的约束么?例如参数是否非空,是否大于零,是不是看起来像个IP地址,等等等。 * 我该如何处理那些不符合预期的参数?我是应该抛出一个异常,还是把错误传递给一个callback。 * 我该怎么在程序里区分不同的异常(比如“请求错误”和“服务不可用”)? * 我怎么才能提供足够的信息让调用者知晓错误细节。 * 我该怎么处理未预料的出错?我是应该用 `try/catch` ,`domains` 还是其它什么方式呢? 这篇文章可以划分成互相为基础的几个部分: * **背景**:希望你所具备的知识。 * **操作失败和程序员的失误**:介绍两种基本的异常。 * **编写新函数的实践**:关于怎么让函数产生有用报错的基本原则。 * **编写新函数的具体推荐**:编写能产生有用报错的、健壮的函数需要的一个检查列表 * **例子**:以`connect`函数为例的文档和序言。 * **总结**:全文至此的观点总结。 * **附录:Error对象属性约定**:用标准方式提供一个属性列表,以提供更多信息。
';