node.js中的错误处理(二)

93 阅读2分钟

1、创建异常

使用throw 关键字创建异常

throw  value

一旦javascript 执行到此行,则常规的程序流会被停止,且控制会被交给最近的异常处理程序。

通常,在客户端代码中,value可以是任何javascript值(包括字符串、数字、对象)。在node.js中,我们不抛出字符串,而仅抛出error对象。

2、错误对象

错误对象是Error对象的实例,或着继承自Error类(由Error核心模块提供):

throw new Error('错误信息')

或者

class NotEnoughCoffeeError extends Error {

  //...

}

throw new NotEnoughCoffeeError()

3、处理异常     

异常处理程序是try/catch语句。try 块中包含的代码行中引发的任何异常都会在相应的catch块中处理。

try {

  //代码行

} catch (e) {}

在此示例中,e是异常值,可以添加多个处理程序,它们可以捕获各种错误。

4、Promise的异常

使用promise可以链接不同的操作,并在最后处理错误。

doSomething01()

  .then(doSomething02)

  .then(doSomething03)

  .catch(err => console.error(err))

我们并不知道错误在哪里,但是我们可以处理所调用的每一个函数中(doSomethingX)的错误,并且在错误处理程序内部抛出新的错误,此即为调用外部的catch处理程序。

const doSomething01 = () => {

  //...

  try {

    //...

  } catch (err) {

    //... 在本地处理

    throw new Error(err.message)

  }

  //...

}

为了能够在本地(而不是在调用的函数中)处理错误,则可以断开链条,

在每个then() 函数中创建函数并处理异常:

doSomething01()

  .then(() => {

    return doSomething02().catch(err => {

      //处理错误

     throw  err //打断链条

    })

  })

  .then(() => {

    return doSomething02().catch(err => {

      //处理错误

      throw err //打断链条

    })

  })

  .catch(err => console.error(err))

先总结道这里哈,敬请期待下期。

31d8bb1dbeaa4fbf0ce3d47f6ee2f2b3.jpeg

今日份寄语:

以前总认为坚持会让我们变强大,但是长大后才发现,让我们强大的,是放下。