码迷,mamicode.com
首页 > 其他好文 > 详细

什么时候抛异常什么时候捕捉异常?

时间:2019-08-25 13:57:31      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:数据库   方便   调用   操作   EDA   orm   事务管理   不能   方法   

之前面试遇到这样一个问题,异常有两种处理方式,一种是直接捕捉try catch,一种是直接往外抛throws,那么这两种方式都是什么情况下使用呢

当时一下没反应过来,工作中大多数都是直接捕获,后面才了解到首先你要弄清楚这个功能的位置:

  • 如果这个方法没有人调用,则一定要捕捉不然就抛到jvm来处理了(比如Controller层一般都是要对异常进行捕捉,该打日志的打,该抛前台的抛)
  • 有其他调用者要使用你这个方法,如果这个异常信息是不需要让调用者知道的就直接捕获,比如时间转换用到SimpleDateFormat则可以直接捕获异常
  • 但如果这个异常调用者是需要知道的就要抛出去让调用者去处理,比如controller层调service业务层,如果业务层逻辑处理失败是需要拿到他失败的原因方便运维,这种情况就要抛异常

对于service层如果有对数据库进行增删改操作的一般会有事务管理,这个时候异常就不能随便捕捉了,不然就会影响事物的回滚(或者捕捉后再抛一个自定义异常)

什么时候抛异常什么时候捕捉异常?

标签:数据库   方便   调用   操作   EDA   orm   事务管理   不能   方法   

原文地址:https://www.cnblogs.com/chenglei0718/p/11407447.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!