数据库操作捕获异常及返回值的问题

来源:9-1 【应用】删除资源

赵胤淞

2020-08-23

  1. 请问老师,在Repository对数据库进行操作时,是否需要使用try catch来捕获可能发生的异常?或者是将try catch放在Controller中?
  2. 在项目中,Repository中Add或者Delete都是void,没有返回值,那Controller或者是前端怎么知道是不是插入或者删除成功了呢?
    另外请问一下在实际生产情况下,都需要对哪些地方做异常捕获呢,谢谢。
写回答

1回答

阿莱克斯刘

2020-08-24

        问题一,try catch应该放在Controller中,如果出现异常会一层一层向上抛出,最后被controller接住,log也可以放在controller里。

        问题二,这个问题非常好!Repository中Add或者Delete没有返回值是因为entity framework没有返回值,原因是调用Add()或Remove()函数的时候ef只是在内存中操作数据、并不会被立刻更新到数据库中,所以entity framework也没法告诉你操作是否成功。那Controller怎么知道插入或者删除是否成功了呢?就是在调用repository.saveAsync()的时候,才会真正提交数据库,这个时候如果出错你可以通过try catch接住错误。

        一般来说,在IO操作、网络处理、数据库处理、类型转换这些地方都应该做可能异常处理。不过,一般来说,不需要特地去捕获异常,只需要在controller级别做try catch就足够应付大部分情况了。

     异常捕获与日志的部分我在近期会给课程做一个升级,补充这部分的内容。


0
1
赵胤淞
感谢老师的回答,学到了很多
2020-08-24
共1条回复

.Net 开发电商后端API 从0到精通RESTful

. Net 实战+RESTful思想纵深课程,开发优雅RESTful风格API。

977 学习 · 547 问题

查看课程