finally块的执行
来源:互联网 发布:四维星窗帘设计软件 编辑:程序博客网 时间:2024/05/16 13:40
1、try和finally块中都有return
public static void main(String[] args) {System.out.println(m1());}static int m1() {try {return 1;} catch (Exception e) {return 2;} finally {System.out.println("m1() finally");return 3;}}
返回结果
m1() finally3
当finally块中return语句时,将会覆盖其他语句块的return。
2、finally块中没有return
public static void main(String[] args) {System.out.println(m2());}static int m2() {int result = 1;try {result = 2;return result;} catch (Exception e) {return 0;} finally {result = 3;System.out.println("m2() finally");}}
运行结果
m2() finally2
程序在执行到return时首先将返回值存储在一个指定的位置,其次去执行finally块,finalyy块对值的修改不起作用。返回之前缓存的值。
3、try块异常
public static void main(String[] args) {System.out.println(m3());}static int m3() {try {int i = 5 / 0;System.out.println("1");return i;} catch (Exception e) {System.out.println("2");return 2;} finally {System.out.println("3");return 3;}}
执行结果
233
4、try块之前异常,finally不执行
public static void main(String[] args) {System.out.println(m4());}static int m4() {int i = 10 / 0;try {System.out.println("1");return i;} catch (Exception e) {System.out.println("2");return 2;} finally {System.out.println("3");return 3;}}
执行结果
Exception in thread "main" java.lang.ArithmeticException: / by zeroat TestString.m3(TestString.java:16)at TestString.main(TestString.java:12)
如果在try语句块之前报错,就直接报错。
5、try块中有System.exit(0)
public static void main(String[] args) {System.out.println(m5());}static int m5() {try {System.out.println("1");System.exit(0);return 1;} catch (Exception e) {System.out.println("2");return 2;} finally {System.out.println("3");return 3;}}
运行结果:
1
当程序在try块中System.exit(0),强制退出时也不会去执行finally块中的代码。
阅读全文
0 0
- finally块的执行
- Finally语句块的执行
- try-catch-finally块的执行流程
- finally块中代码的执行
- 何时执行Java语言的finally块
- try/catch/finally块的执行顺序
- Java的finally块执行分析
- return之后finally块还会不会执行(try-catch块中finally的小例子)
- java try语句块 finally和return 的执行顺序
- try中return语句与finally块的执行先后
- finally语句块不会被执行的情况
- finally代码块不一定总是被执行的
- [分享]关于异常里面的finally代码块执行时机
- Java中finally块与return之间的执行顺序
- 不一定会执行finally代码块的两个例子
- try、catch、finally语句块的执行顺序
- Java中finally语句块的深度解析(try catch finally的执行顺序)
- java的try-catch-finally块中,finally中的代码是否一定会执行?
- 数据结构与算法
- h5学习笔记:http-server小工具
- linux --> shell --> bash001
- 安卓第三方登录之微信登录(图文详解)
- python中两种实现排序的方法:冒泡排序和插入排序
- finally块的执行
- Codeforces Round #452 (Div. 2)
- spring-framework框架知识点罗列
- 用for循环和while循环写华氏温度与摄氏温度的转化
- Python学习笔记(一)基础
- 关于typedef的用法总结
- mongodb对数组中的所有元素进行一次性修改方法(限3.6版本)
- 线段覆盖系列
- linux内核kallsyms机制分析