retrun语句在try(){}catch(){}中的作用

来源:互联网 发布:sublime text 3运行js 编辑:程序博客网 时间:2024/05/22 12:19
try...catch....finally测试:

我们先进行设定测试环境,我们需要测试return在try块,catch块,finally块以及放在最底层中的结果,首先,我们实现正常的函数,代码如下所示:

package sample;public class TryCatchFinally{//用于输出,定义函数专门用于输出   public static void sop(Object o)   {      System.out.println(o);   }   //定义函数用于表示出错信息   static public int  div(int a,int b)   {      int res=0;      try      {        res=a/b;       }      catch(ArithmeticException e)      {      sop("in catch");      }      finally      {         sop("in Finally");      }    return res; }   //主函数   public static void main(String[] args)   {    sop("Main0:"+div(10,2));   }}

结果:Main0:5

开始测试,我们需要将main函数中的div(10,2)修改为有异常的语句,即将其修改为div(10,0)即可,如下所示程序:

package sample;public class TryCatchFinally{//用于输出,定义函数专门用于输出   public static void sop(Object o)   {      System.out.println(o);   }   //定义函数用于表示出错信息   static public int  div(int a,int b)   {      int res=0;      try      {        res=a/b;       //return res    }      catch(ArithmeticException e)      {      //sop("in catch");      //return res;      }      finally      {       //  sop("in Finally");// return res;      }      //return res;   }   //主函数   public static void main(String[] args)   {    sop("Main0:"+div(10,0));   }}

1.1 return 放在try块中

   预测:出错,分支中也需要一个return

结果:


1.2放在catch语句块中

 


1.3放到Finally中


编译没有报错,运行时报出异常,执行catch块,执行Finally块,输出最后返回结果0

1.4放置到try(){}catch(){}finally{}语句块后面,


我们能够看到报出异常,编译没有报错,运行时报出异常,执行catch块,执行Finally块,输出最后返回结果0

2.1放置到try和catch

我们能够看到报出异常,编译没有报错,运行时报出异常,执行catch块,执行Finally块,输出最后返回结果0

2.2放置到try和finally


我们能够看到报出异常,编译没有报错,运行时报出异常,执行catch块,执行Finally块,输出最后返回结果0

2.3放置到try和最底层


我们能够看到报出异常,编译没有报错,运行时报出异常,执行catch块,执行Finally块,输出最后返回结果0

2.4放置在catch和finally中



我们能够看到报出异常,编译没有报错,运行时报出异常,执行catch块,执行Finally块,输出最后返回结果0

2.5放置在catch和最底层


我们能够看到报出异常,编译没有报错,运行时报出异常,执行catch块,执行Finally块,输出最后返回结果0

2.6 放置在finally和最底层



编译时提示出现错误,因为在finally中已经return res,就不能够继续执行后面的语句,所以会出现这样的提示

3.1放置到try,catch,finally中


我们能够看到报出异常,编译没有报错,运行时报出异常,执行catch块,执行Finally块,输出最后返回结果0

3.2放置到try,catch ,最底层


catch中或者try中执行,无法进行后面的操作

3.3放置到catch,finally,最底层


finally块为必须执行的操作,所以无法执行后面的操作

3.4四处全部使用return



无法执行后面的操作

3.5测试返回值(无异常情况):

当我们在其中嵌入数值是,我们应该获得怎样的结果呢?首先我们进行修改程序,代码如下所示:

package sample;public class TryCatchFinally{//用于输出,定义函数专门用于输出   public static void sop(Object o)   {      System.out.println(o);   }   //定义函数用于表示出错信息   static public int  div(int a,int b)   {     int m=19;      try      {       m=m+10;     return m;    }      catch(Exception e)      {      m=m+5;           return m;      }      finally      {         m=m+100;    return m;      }        }   //主函数   public static void main(String[] args)   {    sop("Main0:"+div(10,0));    }}

结果如下所示:由返回的结果我们能够看到其和为100+19+10,既能够说明程序流程是try→finally-→return m;,没有从try中的return返回到主函数中。。。。因为try(){}catch(){}finally(){}是一个整体



3.6测试值(有异常情况)
package sample;public class TryCatchFinally2{//用于输出,定义函数专门用于输出   public static void sop(Object o)   {      System.out.println(o);   }   //定义函数用于表示出错信息   static public int  div(int a,int b)   {      int res=0;      int m=19;      try      {        m=m+10;        res=a/b;     return m;    }      catch(ArithmeticException e)      {      m=m+5;      return m;      }      finally      {       m=m+100;       return m;      }   }   //主函数   public static void main(String[] args)   {    sop("Main0:"+div(10,0));   }}

结果如下所示:由返回的结果我们能够看到其和为100+19+10+5,既能够说明程序流程是try→catch->finally-→return m;


以上就是测试结果

2 0
原创粉丝点击