-- try catch finally 执行顺序验证
public class TestTry {
public static void main(String[] args) {
TestTry t = new TestTry();
System.out.println(t.getString() + " ---- return执行结束!");
}
public String getString() {
String testString = "abc";
try {
System.out.println("执行try!");
// int a = 9 / 0;
return testString;
} catch (Exception e) {
System.out.println("执行catch!");
return testString;
} finally {
System.out.println("执行finally!");
}
}
}
执行结果:
[1]执行try!
[2]执行finally!
[3]abc ---- return执行结束!
-------------------------------------------------------------------
在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。
在转去之前,try中先把要返回的结果存放到不同于a的局部变量中去,执行完finally之后,在从中取出返回结果,
因此,即使finally中对变量a进行了改变,但是不会影响返回结果。验证实例:
public class Test11 {
public static void main(String[] args) {
int b = f();
System.out.println(b);
}
private static int f() {
int a = 10;
try {
a += 10;
System.out.println("try");
// int e = 3 / 0;
a += 10;
return a;
} catch (Exception ex) {
System.out.println("catch");
return a;
} finally {
System.out.println("finally");
a += 100;
}
}
}
执行结果:
[1] try
[2] finally
[3] 30
结论:
1.不管出没出现异常,finally块中的语句都会执行;
2.当try或catch块中有return语句时,finally块中的语句仍会执行;
3.finally块中的语句是在return语句执行之后才执行的,即函数返回值是在finally块中语句执行前确定的;
4.finally块中不主张包含return语句,如果加了return在finally块中,将返回这个值。
总结:finally在return前执行,在finally的操作,不会改变已经确定的return的值。
分享到:
相关推荐
try-catch-finally执行顺序验证(左边是.java文件,右边是.class文件) 提示: try、catch块内的return操作编译后会变成把return的值保存到变量var的操作。 总结: try、catch块内的return操作编译后会变成把return的值...
try、catch、finally、return 执行顺序超详细讲解,包看包会。
首先执行try,如果有异常执行catch,无论如何都会执行finally,当有return以后,函数就会把这个数据存储在某个位置,然后告诉主函数,我不执行了,接下来你执行吧,所以函数就会推出
主要介绍了C#中的try catch finally用法,以实例形式分析了try catch finally针对错误处理时的不同用法,具有一定的参考借鉴价值,需要的朋友可以参考下
3. 但是如果有 finally块的话,那么,finally 几乎是必定会执行的,但是这里有一个先后顺序的问题,应该是 finally 块和 打印异常堆栈将会在另外一个线程之中执行,所以 打印的顺序就很有意思了。 4. 如果在try或者...
主要介绍了关于java中的一道面试题,这套题就是在try中含return语句时代码的执行顺序,这个问题看似简单,却暗藏杀机啊!文中通过一个个例子详细介绍了其中玄机,需要的朋友可以参考学习,下面来一起看看吧。
finally是监听程序是否在try或者catch中执行 下面列举的是try执行的语句是一个异常错误的情况 下面列举的是try执行语句是一个正确的情况 异常类的一个继承顺序图,异常类中的属性列表 catch中的表达式的几种...
5.finally段的代码无论是否发生异常都会执行。 6.在一个try语句块中,基类异常的捕获语句不可以写在子类异常捕获语句的上面。 看一个例子: /** * @author Lansine *
try 、finally 、catch 什么是 Error 内部类 创建内部类集合 Iterable 接口顶层接口 ArrayList Vector LinkedList 类Stack HashSet TreeSet LinkedHashSet 类 PriorityQueue HashMap TreeMap 类 LinkedHashMap 类 ...
18. `try-catch-finally` 中,如果 `catch` 中 `return` 了,`finally` 还会执行吗?(是) Java 集合 19. 哪些集合类是线程安全的?(`Vector`、`Hashtable` 等) 20. `Collection` 和 `Collections` 有什么区别...
* try-catch-finally语句 5\. 程序结构 C#中的程序结构用于组织和管理程序的代码。常见的程序结构包括: 5.1 类 类是C#中的基本结构单元,用于定义对象的行为和状态。类可以包含字段、属性、方法和事件等成员。 ...
六、try-catch-finally 语句的执行顺序 在 try 语句中如果有 return 语句,finally 语句块总是会被执行的,且在 return 语句之前执行。 七、List<Short> 和 short 的关系 short 是基本类型,不能直接调用 add ...
finally是异常处理语句结构的一部分,表示总是执行。 finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。 13、sleep()...
1. finally和return的关系:finally块用于释放资源,return用于返回函数结果,在try-catch-finally中,finally块总是被执行。 2. 页面重定向的方式:包括客户端重定向、服务器端重定向、JavaScript重定向等。 3. ...
15.4 使用Try...Catch...Finally创建结构化错误处理程序 251 15.4.1 处理异常 253 15.4.2 处理预期的异常 254 15.5 总结 256 15.6 问与答 256 15.7 作业 257 15.7.1 测验 257 15.7.2 答案 257 15.7.3 练习 ...
15.4 使用Try...Catch...Finally创建结构化错误处理程序 251 15.4.1 处理异常 253 15.4.2 处理预期的异常 254 15.5 总结 256 15.6 问与答 256 15.7 作业 257 15.7.1 测验 257 15.7.2 答案 257 15.7.3 练习 ...
Java语言提供了try、catch、finally等关键字来处理异常。 Java语言的Applet是指在Web浏览器中执行的Java程序。Applet可以在Web浏览器中显示图形、动画、游戏等。Applet的生命周期包括init、start、stop、destroy四...
try, catch,finally ,return 执行顺序 100 异常的处理办法之二,声明异常: throws子句 101 方法重写中声明异常原则 102 异常的处理办法之三,手动抛出异常,throw子句 103 自定义异常 103 使用异常机制建议 104 ...
名称 Perl::Core - 单个导入中的 Perl 核心要素 版本 版本 0.0100 概要 use Perl::Core;... – 使用try/catch/finally关键字进行正常的异常处理 错误 请在 bugtracker 网站上报告任何错误或功能请
在读取每行数据时,我们使用 getValues() 方法来获取字符串数组,这个数组的顺序即文件数据列的顺序。最后,我们关闭了 CsvReader 对象。 需要注意的是,在读取 CSV 文件时,需要指定正确的字符编码,以避免读取到...