看代码说结果并简述理由:
public class Main {
public static int testFinally() {
int a = 1;
try {
if (a == 1) {
throw new RuntimeException("REA");
}
} finally {
if (a == 1) {
throw new RuntimeException("REB");
}
a = 2;
}
return a;
}
public static void main (String args[]) {
System.out.println(testFinally());
}
}
1
knightdf 2016-08-30 17:49:41 +08:00
抛出 finally 里的异常呗
|
4
knightdf 2016-08-30 18:00:44 +08:00
@kumobot 因为 finally 里就是一正常语句啊。。你还可以在 finally 里再 try catch 呢 - -
|
5
YORYOR 2016-08-30 18:04:56 +08:00
finally 里面的异常没有被捕获,直接抛异常 REB 了
|
6
xjp 2016-08-30 18:44:35 +08:00
抛出 REB
|
7
zts1993 2016-08-30 19:11:22 +08:00 3
|
8
yangff 2016-08-30 19:15:02 +08:00
编译失败……?
|
9
yangff 2016-08-30 19:16:34 +08:00
哦不会
|
10
xuhaoyangx 2016-08-30 19:46:56 +08:00
第一次抛出异常,因为没有相关 catch ,会直接自行 finally 的内容,然后就是抛出 REB 。结果 REB
|
11
dtfm 2016-08-30 19:50:49 +08:00
我感觉这道题是不是出题人弄错了,我见过很多相似的题目,但考点都是考察 finaly 和 try catch 优先级的
|
12
clearbug 2016-08-30 20:22:57 +08:00
是啊,这题没有什么疑问呀。。初学 Java 的都能看懂要抛出 REB 了。 IDEA 亲测也是如此
|
13
kyzylsy 2016-08-30 20:23:46 +08:00
无事水😪
|
14
F1ReKing 2016-08-30 20:34:23 +08:00
抛出 REB
|
15
depress 2016-08-30 20:36:34 +08:00 via Android
这道题的考察点分明是最后打印的是 1 还是 2 ,楼上都在干什么。。。
|
17
kingoldlucky 2016-08-30 21:31:24 +08:00
REB
|
18
q397064399 2016-08-30 21:37:05 +08:00
REB 无疑,
try 语句执行后,无论什么情况, finally 语句都要被执行,但是 finally 抛出异常后,整个程序就 REB ,因为没有其它程序路径了 |
19
kumobot OP @q397064399 为什么没有打印出 REA 的异常信息呢
|
20
q397064399 2016-08-30 22:30:52 +08:00
@kumobot 没有说不打印 REA 作为 try 语句,有异常肯定会抛出 抛出之后呢?
finally 总是要被执行的就是了 |
21
8bit 2016-08-30 22:34:39 +08:00
这样考才是真有点迷惑性
public class Main { public static int testFinally() { int a = 1; try { if (a == 1) { throw new RuntimeException("REA"); } a = 2; return a; } finally { if (a == 1) { throw new RuntimeException("REB"); } } } public static void main (String args[]) { System.out.println(testFinally()); } } |
22
msg7086 2016-08-30 22:49:01 +08:00
finally 抢抛了。
正常的执行流程是 异常发生 -> finally -> 向上传递异常 然而 finally 里抛了异常,就变成了 REA 发生 -> finally -> REB 发生 -> 向上传递 REB 了。 |
25
colatin 2016-08-31 00:19:58 +08:00
这种问题都值得讨论,看来 java 在 v2 不受待见啊
|
27
paragon 2016-09-02 17:36:46 +08:00
这就考察递归的功力了~
|