什么时候抛异常什么时候捕捉异常?
Posted chenglei0718
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么时候抛异常什么时候捕捉异常?相关的知识,希望对你有一定的参考价值。
之前面试遇到这样一个问题,异常有两种处理方式,一种是直接捕捉try catch,一种是直接往外抛throws,那么这两种方式都是什么情况下使用呢
当时一下没反应过来,工作中大多数都是直接捕获,后面才了解到首先你要弄清楚这个功能的位置:
- 如果这个方法没有人调用,则一定要捕捉不然就抛到jvm来处理了(比如Controller层一般都是要对异常进行捕捉,该打日志的打,该抛前台的抛)
- 有其他调用者要使用你这个方法,如果这个异常信息是不需要让调用者知道的就直接捕获,比如时间转换用到SimpleDateFormat则可以直接捕获异常
- 但如果这个异常调用者是需要知道的就要抛出去让调用者去处理,比如controller层调service业务层,如果业务层逻辑处理失败是需要拿到他失败的原因方便运维,这种情况就要抛异常
对于service层如果有对数据库进行增删改操作的一般会有事务管理,这个时候异常就不能随便捕捉了,不然就会影响事物的回滚(或者捕捉后再抛一个自定义异常)
以上是关于什么时候抛异常什么时候捕捉异常?的主要内容,如果未能解决你的问题,请参考以下文章