try、finally、return
程序员文章站
2022-04-06 15:53:31
...
finally块的语句在try或catch中的return语句执行之后返回之前执行且finally里的修改语句不能影响try或catch中 return已经确定的返回值,若finally里也有return语句则覆盖try或catch中的return语句直接返回。
在try块中有System.exit(0);这样的语句,System.exit(0);是终止Java虚拟机JVM的,连JVM都停止了,所有都结束了,当然finally语句也不会被执行到。
例子:
public class FinallyTest1 {
public static void main(String[] args) {
System.out.println(test1());
}
public static int test1() {
int b = 20;
try {
System.out.println("try block");
return b += 80;
}
catch (Exception e) {
System.out.println("catch block");
}
finally {
System.out.println("finally block");
if (b > 25) {
System.out.println("b>25, b = " + b);
}
}
return b;
}
}
运行结果是:
try block
finally block
b>25, b = 100
100
下面这种情况下return的值会被覆盖的,因为Java里只有传值,传对象也只是传对象的地址,而且是值传递:
public static void main(String[] args) {
System.out.println(getMap().get("KEY").toString());
}
public static Map<String, String> getMap() {
Map<String, String> map = new HashMap<String, String>();
map.put("KEY", "INIT");
try {
map.put("KEY", "TRY");
return map;
}
catch (Exception e) {
map.put("KEY", "CATCH");
}
finally {
map.put("KEY", "FINALLY");
}
return map;
}
推荐阅读
-
java中final与finally的使用介绍
-
Android Studio中快捷键实现try catch等功能包含代码块的实现方法
-
C#中的try catch finally用法分析
-
C#中的try catch finally用法分析
-
Android源码中final关键字的用法及final,finally,finalize的区别
-
Python中return语句用法实例分析
-
去掉Myeclipse对JS等文件的验证(Cannot return from outside a function or method)
-
在SQL Server的try...catch语句中获取错误消息代码的的语句
-
PHP Try-catch 语句使用技巧
-
java中final与finally的使用介绍