Java在try中return后finally还执不执行?

Java方法中,在try中return之后,后面的finally还执行吗?

测试代码如下:

public int print(){
    try
    {
        System.out.println("try");
        return 1;
    }
    catch(Exception e){
        return 0;
    }
    finally{
        System.out.println("finally");
    }
    }

直接看结果:

try

finally

原因:

finally语句在return之前执行。

如果在finally中再加上一个return呢?

测试代码如下:

public class Main {
    public static void main(String[] args) {
        System.out.println(print());
    }

    public static int print(){
        try
        {
            System.out.println("try");
            return 1;
        }
        catch(Exception e){
            return 0;
        }
        finally{
            System.out.println("finally");
            return 2;
        }
    }
}

结果如下:

try

finally

2

深入理解:

《关于 Java 中 finally 语句块的深度辨析》

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-12-20 18:17:57

Java在try中return后finally还执不执行?的相关文章

java中return在Try-Catch中的执行顺序

我们知道return会结束此方法并返回指定值.以及在Try-catch-finally中无论try代码块中有没有异常finally中的代码时都会被执行的.但是如果return包含在try-catch-finally中的try或catch块中会怎样呢? 我们再做个试验: 1 static int txt(){ 2 try { 3 @SuppressWarnings("unused") 4 int a=5/0; 5 7 } catch (Exception e) { 8 System.ou

java并发编程中常用的工具类 Executor

/***************************************************  * TODO: description .  * @author: gao_chun  * @since:  2015-4-17  * @version: 1.0.0  * @remark: 转载请注明出处  **************************************************/ java.util.concurrent.Executor 使用 Execut

java中return与finally的执行顺序

网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,当然他们的回答是正确的,经过我试验,至少有两种情况下finally语句是不会被执行的: (1)try语句没有被执行到,如在try语句之前就返回了,这样finally语句就不会执行,这也说明了finally语句被执行的必要而非充分条件是:相应的try语句一定被执行到. (2)在try块中有System.exit(0);这样的语句,System.exit(0);

经典的java中return和finally问题!

经典的java中return和finally问题! 标签: 杂谈 分类: java学习 前一段时间 参加公司的笔试问了这个问题,回来一查才知道当时自己做错了,百思不得其解,上网查到下面的程序,但是运行后发现了错误,我修改后放在了我的blog 上面,希望和大家分享. 代码如下: public class Test { public static void main(String[] args) { System.out.print(tt()); } public static int tt() {

java中return的作用

return的常用作用有以下两种一种是返回参数所用的关键字,假如一个有返回值的方法执行完了之后需要返回一个参数,示例:public string functionTest(){ String a = "abc"; return a;}那么这个方法被调用之后就会返回一个值为abc的字符串,string result = functionTest(); 第二种用法是,代码执行到此处终止.比如当代码执行到某个地方会出现几种结果,然后其中一种结果就不能执行后续代码,这时候在那里加上一个retu

java中 return 的使用场景

情景一.Return 在if判断结构或者其他程序结构,例如for.switch中使用.用于阻止程序往下面执行. package lesson15; import java.util.Scanner; public class Test4 { /** * @param args */ public static void main(String[] args) { // 情景一.Return 在if判断结构或者其他程序结构,例如for.switch中使用.用于阻止程序往下面执行. int age=

java中return语句的用法总结

return算是各大语言的常客,基本上都有return语句,那么在JAVA中,return有什么特殊的地方吗,下面我们来分析下 1.return语句的作用:a.返回一个值,这个值可以是任意类型.b.使程序返回到操作系统(即终止程序) 2.java中对于一个函数,不论有没有返回值类型,都可以带有return 语句. 但是区别在于,return 语句是否可以返回一个值(这取决与该函数的返回值类型). a.如果函数有返回值类型(即返回值类型不为void ),则必须带有返回相应类型值的return 语句

try-catch-finally 中哪个部分可以省略?try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗?

try-catch-finally 中哪个部分可以省略? finally这部分可以省略 try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? 会执行 1.不管有没有异常,finally中的代码都会执行2.当try.catch中有return时,finally中的代码依然会继续执行3.finally是在return后面的表达式运算之后执行的,此时并没有返回运算之后的值,而是把值保存起来,不管finally对该值做任何的改变,返回的值都不会改变

Java中处理异常中return关键字

1. package cn.day006; public class Test { public static void main(String[] args) { System.out.println(getResult()); } @SuppressWarnings("finally") public static int getResult(){ int a =100; try{ return a+1; //注意,java的基础数据类型是值传递,这里的返回值已经和上面的a没有关系