Java中try,return ,finally,throw使用总结:

Java try return finally throw 使用总结:

 

(1)       try 中抛出异常且 catch 中有 return 语句, finally 中没有 return 语句, java 先执行 catch 中非 return 语句,再执行 finally 语句,最后执行 catch return 语句。详见情况一。

(2)       try 中抛出异常且 catch 中有 return 语句, finally 中也有 return 语句, java 先执行 catch 中非 return 语句,再执行 finally 中非 return 语句,最后执行 finally return 语句,函数返回值为 finally 中返回的值。详见情况二。

(3)       Throw (无能是 catch 中还是非 catch 中)后面不能再跟 code ,否则编译不能通过。详见下面情况三,四,五。

Return finally 总结:

情况一,代码如下:

public class Test {

public int testTry(){

       FileInputStream fi=null;

      

       try{

           fi=new FileInputStream("");

          

       }catch(FileNotFoundException fnfe){

            System.out.println("this is FileNotFoundException");

            return 1;

       }catch(SecurityException se){

           System.out.println("this is SecurityException");

       }finally{

           System.out.println("this is finally");

       }

       return 0;

}

 

public static void main(String[] args) {

Test t= new Test();

       System. out .println(t.testTry());

}

}

Output

this is FileNotFoundException

this is finally

1

 

情况二,代码修改如下:

public class Test {

public int testTry(){

       FileInputStream fi=null;

      

       try{

           fi=new FileInputStream("");

          

       }catch(FileNotFoundException fnfe){

            System.out.println("this is FileNotFoundException");

            return 1;

       }catch(SecurityException se){

           System.out.println("this is SecurityException");

       }finally{

           System.out.println("this is finally");

             return 3;

       }

       //return 0;

}

 

public static void main(String[] args) {

Test t= new Test();

       System. out .println(t.testTry());

}

}

Output

this is FileNotFoundException

this is finally

3

----------------------------------------------------

Return throw 总结:

情况三:

public class Test {

    public static void main(String[] args) {

       Test t=new Test();

       try{

       System.out.println(t.testTry());

       }catch(Exception e){

           System.out.println("this is exception");

       }

      

    }

    public int testTry()throws Exception{

       FileInputStream fi=null;

      

       try{

           fi=new FileInputStream("");

          

       }catch(FileNotFoundException fnfe){

            //System.out.println("this is FileNotFoundException"); 

           throw new Exception();

           return 1;

       }catch(SecurityException se){

           System.out.println("this is SecurityException");

       }finally{

           System.out.println("this is finally");

       }

       return 0;

    }

}

 

>javac Test.java

Test.java:22: 无法访问的语句

                     Return 1;

 

情况四:

public class Test {

    public static void main(String[] args) {

       Test t=new Test();

       try{

       System.out.println(t.testTry());

       }catch(Exception e){

           System.out.println("this is exception");

       }

      

    }

    public int testTry()throws Exception{

       FileInputStream fi=null;

      

       try{

           fi=new FileInputStream("");

          

       }catch(FileNotFoundException fnfe){

            //System.out.println("this is FileNotFoundException"); 

           throw new Exception();

           System.out.println("after throw exception");

          // return 1;

       }catch(SecurityException se){

           System.out.println("this is SecurityException");

       }finally{

           System.out.println("this is finally");

       }

       return 0;

    }

}

>javac Test.java

Test.java:22: 无法访问的语句

                     System.out.println("this is SecurityException");

 

情况五:

public class Test {

    public static void main(String[] args) {

       Test t=new Test();

       try{

       t.testTry();

       }catch(Exception e){

           System.out.println("this is exception");

       }

      

    }

    public void testTry()throws Exception{

       throw new Exception();

       System.out.println("this is testTry method");

    }

}

>javac Test.java

Test.java:22: 无法访问的语句

                    System.out.println("this is testTry method");

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值