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

Posted chenglei0718

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么时候抛异常什么时候捕捉异常?相关的知识,希望对你有一定的参考价值。

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

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

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

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

以上是关于什么时候抛异常什么时候捕捉异常?的主要内容,如果未能解决你的问题,请参考以下文章

Java程序中的异常应该在啥时候抛出

异常处理的原则

java啥时候需要抛出异常

什么时候抛出/捕获异常?

2017-9-1 - A - 异常处理 - 多线程基础

什么时候用异常,什么时候用断言?