请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

正在回答

1回答

阿莱克斯刘 2020-08-24 06:09:16

        问题一,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 21:06:54
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号