星空网 > 软件开发 > Java

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没有关系了      }catch(Exception e){        e.printStackTrace();       }finally{        return a;  //最后再把值重定向到a(相当于将try中的返回值覆盖掉),所以输出还是100      }    }}

结果:100

 

2.

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++;  //切记 a++  ----> a=a+1 此时a的值做出了改变      }catch(Exception e){        e.printStackTrace();       }finally{        return a;        }    }}

结果:101

3.

package cn.day006;public class Test {   public static void main(String[] args) {      System.out.println(getResult());    }    public static int getResult(){      int a =100;            try{
a++; return a; }finally{ a++; } }}

结果是101。

分析:

在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。

在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去,执行完finally之后,在从中取出返回结果,

因此,即使finally中对变量x进行了改变,但是不会影响返回结果。

它应该使用栈保存返回值。

4.

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 =100;            try{                a=a+10;         throw new RuntimeException();      }catch(Exception e){        System.out.println("截获异常并重新抛出异常");        throw new Exception();            }finally{        return a;      }    }}

结果如下:

截获异常并重新抛出异常
110
异常处理finally

 

关键的“截获异常catch”却没有执行!!!

原因是在getResult()的finally中return一个值,等同于告诉编译器该方法没有异常,但实际上异常是有的,这样的结果是该方法的调用者却捕获不到异常,相对于异常被无端的被吃掉了,隐藏杀机啊!!

 

参考牛人博客:http://www.cnblogs.com/Fskjb/archive/2012/02/15/2353256.html




原标题:Java中处理异常中return关键字

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

越南lazada好做吗:https://www.goluckyvip.com/tag/85270.html
lazada电商怎么样:https://www.goluckyvip.com/tag/85272.html
lazada怎么退货:https://www.goluckyvip.com/tag/85276.html
lazada是什么软件:https://www.goluckyvip.com/tag/85277.html
lazada用什么软件:https://www.goluckyvip.com/tag/85278.html
lazada有客服吗:https://www.goluckyvip.com/tag/85279.html
如何从抖音上多挣钱?记住这12个字 :https://www.kjdsnews.com/a/1836445.html
连麦专家:2024年到底如何做小红书? :https://www.kjdsnews.com/a/1836446.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流