`

java中try catch finally执行顺序

阅读更多
1.对于finally,是在栈调用中最后调用的。就是说try里所用程序步骤都执行完毕,就等return的时候,finally开始执行。这样最后try里的return就会被覆盖掉。
package com;
public class Test {
	public static void main(String[] args) {
		System.out.println(test());
	}

	static int test() {
		int i = 0;
		try {
			return i++;
		} finally {
			return ++i;
		}
	}
}


返回2

下面是网上一个同学的误区,认为finally不是最后执行的。原因不必说了。
public class FinallyReturnTest {
    public static void main(String[] args) {
        tt();
    }
 
    // finally中的代码是必须要执行的,而且是在return前执行,除非碰到exit()。
    static Return tt() {
        try {
            return new Return("try");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("finally");
        }
        return new Return("outter");
    }
 
}
 
class Return {
    Return(String name) {
        System.out.println("return " + name);
    }
}
分享到:
评论

相关推荐

    try-catch-finally执行顺序验证

    try-catch-finally执行顺序验证(左边是.java文件,右边是.class文件) 提示: try、catch块内的return操作编译后会变成把return的值保存到变量var的操作。 总结: try、catch块内的return操作编译后会变成把return的值...

    java面试题之try中含return语句时代码的执行顺序详解

    主要介绍了关于java中的一道面试题,这套题就是在try中含return语句时代码的执行顺序,这个问题看似简单,却暗藏杀机啊!文中通过一个个例子详细介绍了其中玄机,需要的朋友可以参考学习,下面来一起看看吧。

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

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

    200个Java经典面试题总结附带答案.docx

    18. `try-catch-finally` 中,如果 `catch` 中 `return` 了,`finally` 还会执行吗?(是) Java 集合 19. 哪些集合类是线程安全的?(`Vector`、`Hashtable` 等) 20. `Collection` 和 `Collections` 有什么区别...

    java经典选择题题库及答案.docx

    Java语言提供了try、catch、finally等关键字来处理异常。 Java语言的Applet是指在Web浏览器中执行的Java程序。Applet可以在Web浏览器中显示图形、动画、游戏等。Applet的生命周期包括init、start、stop、destroy四...

    java jdk实列宝典 光盘源代码

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

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

    第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 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 ...

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

    try 、finally 、catch 什么是 Error 内部类 创建内部类集合 Iterable 接口顶层接口 ArrayList Vector LinkedList 类Stack HashSet TreeSet LinkedHashSet 类 PriorityQueue HashMap TreeMap 类 LinkedHashMap 类 ...

    java 面试题 总结

    Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来...

    java读写csv文件

    使用 Java 读写 CSV 文件可以使用 Java IO 类库,但是在实际处理中发现 CSV 文件本身包含了对各种特殊字符的处理信息,这些处理信息可能会导致读取到的字符串不是原始内容。为了解决这个问题,可以使用 javacsv 库,...

    JAVA基础课程讲义

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

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

    第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 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 ...

    Java常见面试题208道.docx

    77.try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? 78.常见的异常类有哪些? 八、网络 79.http 响应码 301 和 302 代表的是什么?有什么区别? 80.forward 和 redirect 的区别? 81.简述 tcp...

    java面试800题

    7.在java中尽量使用preparestatement执行sql,从而共享执行计划" Q0032 Oracle的集合操作函数,如sum(),avg(),max(),min(),与select,where,grouby,having的先后顺序,使用方法 Oracle集合查询基本知识,只有进行...

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

    在 java 语言中,Java 程序的基本单位是类,也就是说:一个 Java 程序是由多个类组成 的。定义一个类与定义一个数据类型是有区别的。在程序设计语言中,把定义数据类型的能 力作为一种很重要的能力来对待。在面向...

    Java面试宝典-经典

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

    Java冲刺试题

    六、try-catch-finally 语句的执行顺序 在 try 语句中如果有 return 语句,finally 语句块总是会被执行的,且在 return 语句之前执行。 七、List<Short> 和 short 的关系 short 是基本类型,不能直接调用 add ...

    Java面试宝典2010版

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

    java面试题大全(2012版)

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

    java基础案例与开发详解案例源码全

    10.2 使用try和catch捕获异常..2 50 10.3 使用throw和throws引发异常252 10.4 finally关键字255 10.5 getMessage和printStackTrace方法258 10.6 多重catch259 10.7 自定义异常类260 10.8 本章习题261 第11章 11.1 ...

Global site tag (gtag.js) - Google Analytics