"
如果捕获异常没有专门的处理,只是为了记录日志,那么异常究竟是这样
public void xxx() { try { ... ... ... } catch() { ... } }
捕获好还是这样
public void xxx() {
try {
...
} catch() {
...
}
try {
...
} catch() {
...
}
try {
...
} catch() {
...
}
}
捕获好,另外,是每一种异常单独捕获
public void xxx() {
try {
...
...
...
} catch(aaException e) {
...
} catch(bbException e) {
...
} catch(Exception e) {
...
}
}
好,还是全部都用Exception捕获
public void xxx() {
try {
...
...
...
} catch(Exception e) {
...
}
}
好?
" ![image.png](https://ucc.alicdn.com/pic/developer-ecology/b9b2aeed745e4e0193ca18058737fa9c.png)比较优雅的方式是通过Aop去处理,这样就不用在业务代码里写重复的try,catch
######用Exception好
######只是为了记日志,最后一种就能够说明问题所在了。
######记录日志就没必要细分了,打印堆栈信息一目了然
######这得根据场景来决定:第三种情况,不同异常分开捕捉,是为了细粒度地处理捕获到的异常,比如捕捉到了缓存异常,进行db切换,捕捉到了IO异常,进行补救等;第四种是包一个Exception,总的处理一次,但是会丢失一些具体的信息
我的理解,分这么多异常类型可以认为是switch-case的一种延伸
这个要看情况的,如果自己不需要对异常进行处理,那就直接低层补货exception就可以,如果需要处理就catch补货一下处理。例如异常自己定义提示信息。
######把你需要的关注的异常捕获就好了,其他的异常可能用Exception来捕获。
![image.png](https://ucc.alicdn.com/pic/developer-ecology/bb14048c64ea4055b243ccca44b98821.png)版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。