比如 A 方法调用 B 方法,什么情况 B 要捕获异常自己处理,什么情况要抛给 A 去处理呢?我理解如果异常的产生和 A 调用传入的参数等无关,是 B 本身的问题,就要 B 自己处理,反之要抛给 A 。不知道理解的对不对?
1
yumenawei 2021-05-07 18:38:09 +08:00
如果 b 觉得 a 需要关注这个异常就抛给 a,如果 b 觉得 a 不需要关注就自己吃了就行。
|
3
Jooooooooo 2021-05-07 18:50:11 +08:00
好问题, 也是一个好的面试题.
|
4
yumenawei 2021-05-07 18:56:44 +08:00
@zhoudaiyu #2 比如说,读取文件,文件名是合法的,但是文件不存在,就抛一个 FileNotFoundException,告诉调用者我不能正确的处理,是因为文件不存在,你看看这个问题怎么处理下。
有一些允许调用超时的场景,就会将超时的异常给吞掉,不返回给调用者。 |
5
rioshikelong121 2021-05-07 19:49:28 +08:00
我的理解是能处理的自己处理 处理不了的往上扔。
|
7
zhoudaiyu OP @rioshikelong121 #5 这个思路好,下层尽可能处理,处理不了的扔回去,只要能分清哪些能处理哪些处理不了就可以了,确实是这个思路,感谢感谢
|
8
evilStart 2021-05-07 20:57:38 +08:00 via Android
我的思路是对于调用者来说,这个错误会不会产生预期之外的结果,如果不会的话自己处理,如果会的话能往上扔的就往上扔,不要隐藏错误自己处理
|
9
zhoudaiyu OP @evilStart #8 结合了一下 5 楼的思路,大概就是自己能处理的自己尽量处理,但是不要吞掉一些本身不是被调用方的异常。感谢
|
10
zhoudaiyu OP @Jooooooooo #3 是不是比问 茴香豆的茴有多少写法好
|