我们知道return语句用在某一个方法中,一是用于返回函数的执行结果,二是用于返回值为void类型的函数中,仅仅是一个return语句(return ;),此时用于结束方法的执行,也即此return后的语句将不会被执行,当然,这种情况下return语句后不能再有其它的语句了。

    public static int print() {
int c = 1;
try {
c++;
System.out.println("try执行中...");
return c+100; //--------1
} catch (Exception e) {
e.printStackTrace();
//return c; //--------4
} finally {
c++;
System.out.println("finally执行中...");
return c; //--------2
}
//return c; //---------3
}

  程序执行的结果为:

run:
try执行中...
finally执行中...
3
成功构建 (总时间: 0 秒)

  注意,2与3位置处的return语句只能有一个,并且2、3、4中必须有一个return语句,如果2出执行后方法就结束了,3处的语句得不到执行。

   try语句块执行到1处时,会将会将函数的返回值存放到另外一个临时变量(不同与c的变量,它的值为102)中,由于未发生异常,紧接着将会执行finally语句块,2处又遇到一个语句块,并将返回值存放到临时变量(值为3)中,最终返回的是此处的临时变量的值,此处return执行完成后,该方法结束。  

  public static int print() {
int c = 1;
try {
c++;
System.out.println(c);
System.out.println("try");
return c+100; //--------1
}finally {
c++;
System.out.println(c);
System.out.println("finally"); }
}

  上述代码中finally语句块中没有return语句,函数最终返回的是第一个临时变量的值,也即102,执行结果如下:

run:
try
finally
102
成功构建 (总时间: 0 秒)

关于Java中try-catch-finally-return语句的思考的更多相关文章

  1. java中异常处理finally和return语句的执行顺序

    finally代码块的语句在return之前一定会得到执行 如果try块中有return语句,finally代码块没有return语句,那么try块中的return语句在返回之前会先将要返回的值保存, ...

  2. 【转】Java中try catch finally语句中含有return语句的执行情况(总结版)

    Java中try catch finally语句中含有return语句的执行情况(总结版) 有一点可以肯定,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有r ...

  3. Java中try,catch,finally的用法

    Java中try,catch,finally的用法,以前感觉还算熟悉,但看到一篇博文才有更深点的理解,总结网友博客如下. Java异常处理的组合方式: 1.try+catch  运行流程:运行到try ...

  4. Java中try catch finally语句中含有return语句的执行情况(总结版)

    在这里看到了try >但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也 ...

  5. Java中try catch finally语句中含有return语句的执行情况

    finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因.下面 ...

  6. Java中try catch finally语句中含return语句的执行情况总结-编程陷阱

    前言:有java编程基础的人对java的异常处理机制都会有一定了解,而且可能感觉使用起来也比较简单,但如果在try catch finally语句块中遇到return语句,开发者可能就会遇到一些逻辑问 ...

  7. java中 try catch finally和return联合使用时,代码执行顺序的小细节

    代码1测试 public static void main(String[] args) { aa(); } static int aa() { try { int a=4/0; } catch (E ...

  8. Java中try catch finally的执行顺序问题

    finally 语句块是在 try 或者 catch 中的 return 语句之前执行的.更加一般的说法是,finally 语句块应该是在控制转移语句之前执行,控制转移语句除了 return 外,还有 ...

  9. java中try{}catch{}和finally{}的执行顺序问题

     今天我给大家讲解一下java的的错误和异常处理机制以及相关异常的执行顺序问题.如有不足的地方,欢迎批评指正~ 1.首相简单介绍一下java中的错误(Error)和异常(Exception) 错误和异 ...

  10. 原来java中也有类似goto语句的标签啊--java label标签

    http://blog.sina.com.cn/s/blog_6d5354cd0100xjg7.html ——————————————————————————————————————————————— ...

随机推荐

  1. Ajax概述

  2. C# 正则表达式(一)

    首先来复习一下正则表达式的基础知识,本篇文章分为2个部分,第一个部分复习正则表达式中的元字符和简写表达式,第二部分复习正则表达式的匹配和提取. 1.正则表达式中的元字符和简写表达式 ".&q ...

  3. asp.net select Case条件语句的使用方法

    原文:http://www.111cn.net/net/vb-net/38548.htm 如果 testexpression 与任何 Case expressionlist 表达式匹配 ,则执行此 C ...

  4. jquery 评论等级(很差,差,一般,好,很好)代码

    可能标题没有说的太明白,这里先让大家看一下效果,以便让客官们了解小弟说的是什么... 看完效果后估计各位客官已经明白小弟说的是什么了吧,下面小弟就带大家看下代码 <style> .maxd ...

  5. Delegate&Event

    Delegate 1.基本类: public class Student { public int Id { get; set; } public string Name { get; set; } ...

  6. C# GET 和 SET作用

    C#中get和SET,看来看去还是看不懂,通俗一点解释一下,用了有什么好处,不用会怎么样 如果你这样写是没有什么不一样的. private int __Old; public int Old{ get ...

  7. C语言 SDK编程之通用控件的使用--ListView

    一.ListView控件属于通用控件CONTROL中的一种,在SDK编程方式时要使用通用控件 必须包含comctl32.dll,所以代码中要有头文件: commctrl.h 导入库:comctl32. ...

  8. 35 个必须有的Bootstrap工具和生成器

    Bootstraptor If you think that bootstrap templates are not enough for you, you should go with bootst ...

  9. 国产CPU研究单位及现状

    1.国产CPU主要研制单位 (1)高性能通用CPU(“大CPU”,主要应用于高性能计算及服务器等) 主要研发单位:中国科学院计算所.北大众志.国防科技大学.上海高性能集成电路设计中心 (2)安全适用计 ...

  10. 学习VirtualEnv和Nginx+uwsgi用于django项目部署

    以下叙述中用到的操作系统:Linux CentOS 6.X. 最近几天了解一下VirtualEnv,Apache+Daemon mode,Nginx+uwsgi的概念,并且在项目中实验性部署了一下(目 ...