Java中,执行try-catch-finally语句需要注意:

第一:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)

第二:finally里面不建议放return语句,根据需要,return语句可以放在try和catch里面和函数的最后。可行的做法有四种:   

  1)return语句只在方法最后出现一次。   

  2)return语句仅在try和catch里面都出现。   

  3)return语句仅在try和方法最后都出现。   

  4)return语句仅在catch和方法的最后都出现。

注意,除此之外的其他做法都是不可行的,编译器会报错。

  (1)如果程序运行到try成功时可以返回结果,则采用方法2。

  (2)如果程序运行到catch时(即中途出错时)无需再继续执行后面的代码了,则采取方法4。

  (3)如果程序运行到try或catch时还需要继续执行后面的代码,则采取方法1。

package cn.javaoppday01;

public class Text {

    public static void main(String[] args) {
System.out.println(getResult());
}
public static int getResult(){
int a =;
try{
a++; //此行执行的是try 原值为100,执行try的时候为101
return a;
}finally{
a++;
}
} }
结果为101
package cn.day006;

public class Test2 {
public static void main(String[] args) {
try{
System.out.println(getResult());
}catch(Exception e){
e.printStackTrace();
System.out.println("截获异常catch");
}finally{
System.out.println("异常处理finally");
}
} @SuppressWarnings("finally")
public static int getResult() throws Exception{
int a =;
try{
a=a+;
throw new RuntimeException();
}catch(Exception e){
System.out.println("截获异常并重新抛出异常");
throw new Exception();
}finally{
return a;
}
}
}
结果为:
截获异常并重新抛出异常
110
异常处理finally

即使在try块,catch块中存在return语句,finally块中的语句也会执行,finally 块中的语句不执行的唯一情况是,在异常处理代码中执行System.exit(1);

在try--catch -finally 中 如果有return关键字的话  执行顺序如下:

try --catch--finally -return

异常处理机制中的return关键字的更多相关文章

  1. 论 异常处理机制中的return关键字

    Java中,执行try-catch-finally语句需要注意: 第一:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂 ...

  2. Scala 中为什么不建议用 return 关键字

    在scala中使用 return 的话,编译的时候会提示the latest statement is method is automatically returned, use of th retu ...

  3. return 关键字的作用

    注意: 如果一个函数的返回值类型是具体的数据类型,那么该函数就必须要保证在任意情况下都保证有返回值.(除了返回值类型是void以外) return 关键字的作用: 1. 返回数据给函数的调用者. 2. ...

  4. Nginx return 关键字配置小技巧

    Nginx的return关键字属于HttpRewriteModule模块: 语法:return http状态码 默认值:无 上下文:server,location,if 该指令将结束执行直接返回htt ...

  5. 用return关键字实现1——100累加求和,返回总和并接收输出

    package com.Summer_0419.cn; /** * @author Summer * 用return关键字实现1——100累加求和,返回总和并接收输出 */ public class ...

  6. 用return关键字实现求和操作

    package com.Summer_0419.cn; /** * @author Summer * 用return关键字的知识,实现求和操作 */ public class Test_Method0 ...

  7. return关键字的作用和接受实验

    package com.Summer_0419.cn; /** * @author Summer * 查看return关键字的作用,实验目的: * 1.传入两个实参查看输出结果 * 2.传入两个无参数 ...

  8. 异常 try catch finally return 执行关系 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  9. “全栈2019”Java异常第九章:throws关键字详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

随机推荐

  1. Asp.net core 学习笔记 ( OData )

    2018-12-10 更新 : 从前我都是把 entity 直接用于 odata 曝露 api 给程序用. 如果这个程序是我们自己写的前端,这样的方式非常好,因为就好比前端可以直接对数据库每一个表做操 ...

  2. Run keyword if

    Wait For Page Ready ${a} Run Keyword And Return Status Page Should Contain 新建 log ${a} Run Keyword I ...

  3. [Solution] The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path

    HttpServlet需要tomcat等. 右键project点开properties>project facets> 在右侧栏的Runtime tab中勾选tomcat或者新建tomca ...

  4. HTML第六章总结

    Something Serious of HTML 这一章节主要讲了 HTML 的历史,还有如何使得 HTML 更加规范. HTML's Brief History 在 HTML4 之前,struct ...

  5. UVALive - 7041 G - The Problem to Slow Down You

    题意:求两个串的公共回文子串个数 题解:建两个回文自动机,从0和1各跑一边就是答案了,因为对于回文自动机来说,从头开始dfs就能找出该字符串的所有回文串 //#pragma GCC optimize( ...

  6. Python mongoDB读取

    class db_class(): def __init__(self): mongo_DB='test1' self.mongo_TABEL='test' client=pymongo.MongoC ...

  7. nginx-exporter安装使用

    一.没有vts的启动方式   #nginx_exporter -telemetry.address=:9113 -nginx.scrape_uri="http://127.0.0.1:100 ...

  8. 深拷贝的原生js实现

    面试时被问到怎么实现深拷贝,想都没想就用var obj2=JSON.parse(JSON.stringify(obj1))来实现.但面试官却要我用循环写出来,那就只能用递归了.可惜当时一下子忘了判断是 ...

  9. stl中常用的排序算法

    #include"iostream" #include"vector" using namespace std; #include"string&qu ...

  10. php调用oracle存储

    //todo 调用oracle 存储$config = //数据库配置文件 里面包含 用户密码和host和端口以及dbname $conn = oci_connect($config['usernam ...