- public int getTest() {
- try {
- String s = null;
- s.toString();
- System.out.println("执行 1");
- return 1;
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("执行 2");
- return 2;
- } finally {
- System.out.println("执行 3");
- return 3;
- }
- }
- public static void main(String[] args) {
-
- int i = new A().getTest();
- System.out.println("i:" + i);
- }
调用这个带返回值的函数,会返回哪个值呢?
执行结果如图:

真出现异常,会catch异常,但是,最终返回的是finally代码块中的值;
如果去掉finally代码块的返回语句呢?
- public int getTest() {
- try {
- String s = null;
- s.toString();
- System.out.println("执行 1");
- return 1;
- } catch (Exception e) {
- e.printStackTrace();
- System.out.println("执行 2");
- return 2;
- } finally {
- System.out.println("执行 3");
- }
- }
执行结果如图:

返回了catch中的返回值;
看来finally还有点霸道哦,如果它想要返回值就必须要到,如果不想要,才轮得到其他的代码块哟!
好了,又可以愉快玩耍了。