老师你好,我有个问题想请教下

来源:6-13 【实战API】运行成功!

小学生6年级

2020-02-14

在你这个 express 里面该如何做异常处理呢? 如果是 routes,或者单纯的 controller 的话,用一个中间件来做挺好。 但是要是涉及到 model 层面的话,例如说我保存的时候与数据库交互发生了错误该如何处理呢? 有没有什么全局处理的好办法,当然写法不是像视频中这样采用回调的, 而是全都是 async,await,只能给每一个可能发生的 try catch 么

写回答

1回答

小学生6年级

提问者

2020-02-14

我说一下我的思路,老师能麻烦看看合适不合适么,因为还是在校生,学前端的,正在接触后端,所以还很多不懂。

// routes 
router.post("/create", positionController.wrap )

// controller
const wrap = async function (req, res) {
  try {
    await createPosition(req, res)
  } catch (e) {
    throw new SaveError(arguments...)
  }
}

//model
正常保存,不处理任何异常,就是老师代码中的 createPosition。

在 controller 函数里面定义的这个 saveError 是继承我自定义的一个 HttpError,然后在 express 中间件中写我们的全局异常捕获,switch 或者 if 判断是哪个具体的 error,来做具体处理。 

可是这样的话感觉这个 controller 是不是有点怪怪的,所以想请教下老师。

0
0

玩转MongoDB4.0(最新版) 从入门到实践

30%理论+70%实战,用实操检验真理,一门让你事半功倍的入门进阶课

1138 学习 · 197 问题

查看课程