Node.js错误处理模式

异步语言中的错误处理,须要使用一些独特的,很是规的方式。 下边是Node.js中几种主要的错误处理模式。让咱们来看一下。node

先来熟悉一下Error对象。dom

Error对象能够是Error类的一个​​实例,或者扩展继承Error类的自定义Error类:异步

捕获未捕获的异常

若是在程序执行期间抛出未捕获的异常,程序将崩溃。async

要解决此问题,须要在 process 对象上侦听 uncaughtException 事件:函数

错误返回值

最简单的模式,不能处理异步状况。以下:spa

抛出错误

这是一个经常使用的模式,函数执行时,若是出现错误状况,它会直接抛出一个错误。错误异常须要在catch中捕捉并处理。在try / catch中没法处理异步方法调用抛出的错误。要解决这个问题,咱们须要使用domains。在node v0.8+版本的时候,发布了一个模块domain。这个模块作的就是try...catch所没法作到的:捕捉异步回调中出现的异常。3d

Domain示例:对象

其中 run() 至关于 try, on('error') 至关于 catchblog

错误回调

经过回调返回错误是Node.js中最多见的错误处理模式。处理错误回调可能变得一团糟(回调地狱金字塔)。继承

订阅,监听错误

当发出错误时,错误被广播给全部相关的订阅者,按照订阅顺序,间隔执行。

Promise

Promise用于异步错误处理。以下:

Try...catch 和 async/await

ES7 Async / await可以让咱们编写看起来是同步的,异步JS代码。

使用Await-to-js 第三方类库

不使用try-catch块的async / await。以下:

总结

以上几种方式,基本包含了从早期到如今的全部错误处理方案。Aysnc/await语法更加直观,简洁,以及编写同步代码的体验。不一样环境下,使用最合适的方案,就是最好的。

相关文章
相关标签/搜索