
看代码说结果并简述理由:
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 |
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 这就考察递归的功力了~ |