`

java异常finally相关执行顺序

阅读更多
package com.core;

public class TestException2 {  
    public TestException2() {  
    }  
  
    @SuppressWarnings("finally")
    boolean testEx() throws Exception {  
        boolean ret = true;  
        try {  
           throw new Exception();
        } catch (Exception e) {  
            System.out.println("testEx, catch exception");  
            ret = false;  
            throw e;  
        } finally {  
            System.out.println("testEx, finally; return value=" + ret);  
            return ret;  
        }  
    }  
    public static void main(String[] args) {  
        TestException2 testException1 = new TestException2();  
        try {  
            testException1.testEx();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }  
}

 控制台输出:

testEx, catch exception

testEx, finally; return value=false

 

如果将testEx中finally字句的return注释掉,该方法会抛出异常给main方法。

结论:如果catch到异常会执行catch子句,在返回return或throw之前会执行finally子句,如果finally子句存在return或throw会优先执行。

分享到:
评论

相关推荐

    Java异常发生时程序的执行顺序

     5.finally段的代码无论是否发生异常都会执行。  6.在一个try语句块中,基类异常的捕获语句不可以写在子类异常捕获语句的上面。  看一个例子:   /** * @author Lansine *

    java jdk实列宝典 光盘源代码

    6java异常处理 throw和throws、try和catch;自定义异常类;使用finally;使用异常的技巧和原则; 7 IO输入输出流 获取文件的基本信息;列出指定目录下的文件,并可过滤文件;创建文件和目录;删除文件和目录;移动...

    JAVA基础课程讲义

    try, catch,finally ,return 执行顺序 100 异常的处理办法之二,声明异常: throws子句 101 方法重写中声明异常原则 102 异常的处理办法之三,手动抛出异常,throw子句 103 自定义异常 103 使用异常机制建议 104 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 if语句的嵌套 71 4.2.3 if-else语句 73 4.2.4 if-else语句嵌套 75 4.3 使用while进行循环 76 4.3.1 使用while语句 76 4.3.2 使用...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 if语句的嵌套 71 4.2.3 if-else语句 73 4.2.4 if-else语句嵌套 75 4.3 使用while进行循环 76 4.3.1 使用while语句 76 4.3.2 使用...

    Java 基础核心总结 +经典算法大全.rar

    Java 执行控制流程条件语句 if 条件语句 if...else 条件语句if...else if 多分支语句switch 多分支语句 循环语句 while 循环语句do...while 循环for 循环语句 跳转语句 break 语句 continue 语句面向对象 类也是-种...

    java面试800题

    Q0058 一个Java抽象类声明了一个方法并会抛出一个异常,问继承这个抽象类的子类,实现了这个方法,这个方法声明是不是一定要抛出一模一样的异常,可不可以不抛,或者抛出的异常比抽象类的异常范围大,或者小?...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    疯狂JAVA讲义

    10.5 Java的异常跟踪栈 374 10.6 异常处理规则 376 10.6.1 不要过度使用异常 377 10.6.2 不要使用过于庞大的try块 378 10.6.3 避免使用Catch All语句 378 10.6.4 不要忽略捕获到的异常 379 10.7 本章小结 379 ...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    观事务的软件化模拟,是变量(数据和数据结构)和相关方法(对数据操作和对象管理的程 序)的软件组合。 在面向对象的程序设计中,你可以用软件对象表示现实世界的对象,而这些软件对象和 现实世界对象是相对应的。...

    AIC的Java课程1-6章

     理解和应用Java异常,常用类,IO,集合和多线程等开发技术。  课时安排  总学时:52学时  授课:48学时 (含约20学时实验)  考试:4学时  预备知识  了解和使用操作系统,...

    java范例开发大全源代码

     实例47 try…catch…finally捕获异常的实例 67  实例48 try…catch嵌套捕获异常的实例 68  4.4 throws声明异常 69  实例49 throws声明异常实例一 69  实例50 throws声明异常实例二 70  4.5 throw抛...

    java范例开发大全

    实例47 try…catch…finally捕获异常的实例 67 实例48 try…catch嵌套捕获异常的实例 68 4.4 throws声明异常 69 实例49 throws声明异常实例一 69 实例50 throws声明异常实例二 70 4.5 throw抛出异常 72 实例51 throw...

    Java范例开发大全 (源程序)

     实例47 try…catch…finally捕获异常的实例 67  实例48 try…catch嵌套捕获异常的实例 68  4.4 throws声明异常 69  实例49 throws声明异常实例一 69  实例50 throws声明异常实例二 70  4.5 throw抛出...

    Java常见面试题208道.docx

    面试题包括以下十九部分:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql...

    Java JDK实例宝典

    14 使用正则表达式验证电话号码的格式 第6章 Java异常处理 6. 1 throw. throws. try和catch 6. 2 自定义异常类 6. 3 使用finally 6. 4 使用异常的技巧与原则 第7章 IO——输入输出流 7...

    JAVA 范例大全 光盘 资源

    第9章 Java异常处理与反射机制 183 实例73 运用throws、throw、try与catch 183 实例74 throws声明异常的实例 185 实例75 自定义异常类 187 实例76 使用finally避免资源漏洞 189 实例77 反射机制 191 第10章 I/...

    java自学之道

    4.1 Java异常概念 4.2 异常类型 4.3 Java的内置异常 4.4 Java异常举例 4.5 异常的捕获和处理 4.6 异常抛出 4.6.1 throw语句 4.6.2 throws语句 4.6.3 finally语句 4.7 自定义异常类 4.8 异常应用的其他问题 4.9 异常...

    Java面试宝典-经典

    45、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗? 29 46、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法...

Global site tag (gtag.js) - Google Analytics