<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-204  評論-149  文章-0  trackbacks-0

    由一個筆試題想到的
    try有return,catch也有return,且有finally塊
    并且finally中對resutl進行的賦值并不影響之前的已經(jīng)return 的result值
    最后返回的result引用還是之前的result引用
    finally其實也可以有return,一般eclipse會提示finally block does not complete normally,但不會報錯
    并且會忽略之前的返回和拋出的異常

    package returnfinally;

    public class TestReturnAfterFinally {

         
    public static void main(String[] args) {
          
    try {
           String result 
    = testException();
           System.out.println();
           System.out.println(result);
          }
     catch (Exception e) {
          
    // System.out.println(result);
           System.out.println(e.toString());
          }

         }

         
        
    public static String testException() throws Exception {
          String result 
    = "";
          
    try {
           
    // if (true) throw new MyException("異常!");
           
    //int i = 0;
           int i=0;
           
    int b = 10 / i;
           
    //函數(shù)不會正常的返回,在返回前已經(jīng)拋出異常了,拋出異常即函數(shù)返回了
           /*
            * 相當于catch(Exception e){
            *    throw e;
            * }
            
    */

           
    /*
           result="in try";
           return result;
           
    */

           
    throw new Exception("h");
          }
    catch(Exception e){
              System.out.println(e);
              Exception ee 
    = e;
              
    //throw ee;
              result="in catch";
              
    return result;
          }

          
    finally {
           result 
    = "in finally!";
           System.out.println(result);
           
    //return result;
           
    //throw new Exception("ex cretated in finally");
          }

          
          
    //return result;
         }


        }




     

    posted on 2009-04-30 16:04 Frank_Fang 閱讀(2274) 評論(3)  編輯  收藏 所屬分類: Java編程

    評論:
    # re: java try return finally 2009-04-30 16:17 | Frank_Fang
    剛看見一個分析,不過后面的使用javap沒看懂
    http://blog.csdn.net/nomad2/archive/2006/05/10/722764.aspx  回復(fù)  更多評論
      
    # re: java try return finally 2009-05-24 23:14 | Frank_Fang
    主要關(guān)注一下finally中有return 或者throw時程序的執(zhí)行流程
      回復(fù)  更多評論
      
    # re: java try return finally 2009-05-24 23:14 | Frank_Fang
    java中finally子句是怎么運行的?

    看下面的程序:

    public class JVMTest {

    public static void main(String[] args){
    System.out.println("aa:" + aa());
    }
    public static int aa(){
    int a = 1;
    int b = 10;
    try{
    System.out.println("abc");
    return a;
    }finally{
    a = 2;
    System.out.println("a: "+ a);
    }
    }
    }

    運行結(jié)果為:

    abc
    a: 2
    aa:1

    由此可知:在try語句中,在執(zhí)行return語句時,要返回的結(jié)果已經(jīng)準備好了,就在此時,程序轉(zhuǎn)到finally執(zhí)行了。

    在轉(zhuǎn)去之前,try中先把要返回的結(jié)果存放到不同于a的局部變量中去,執(zhí)行完finally之后,在從中取出返回結(jié)果,

    因此,即使finally中對變量a進行了改變,但是不會影響返回結(jié)果。

    但是,如果在finally子句中最后添加上return a會怎樣呢?

    執(zhí)行結(jié)果如下:

    Compiling 1 source file to E:\sun\InsideJVM\build\classes
    E:\sun\InsideJVM\src\JVMTest.java:37: warning: finally clause cannot complete normally
    }
    1 warning
    compile-single:
    run-single:
    abc
    a: 2
    aa:2

      回復(fù)  更多評論
      
    主站蜘蛛池模板: 亚洲人成在线播放网站| 67194在线午夜亚洲| 国产四虎免费精品视频| 亚洲中文精品久久久久久不卡| 亚洲另类激情专区小说图片| 国产午夜精品久久久久免费视| 亚洲一区二区三区久久久久| 免费国产在线观看| 免费看搞黄视频网站| 亚洲欧美国产日韩av野草社区| 中文字幕亚洲乱码熟女一区二区| 国产四虎免费精品视频| 一个人免费播放在线视频看片| 亚洲成a人片毛片在线| 亚洲精品网站在线观看不卡无广告| 毛片无码免费无码播放 | 亚洲熟妇无码一区二区三区导航| 久久精品夜色噜噜亚洲A∨| 亚洲黄色免费观看| 永久免费无码日韩视频| 亚洲国产精品综合久久20| 亚洲综合区小说区激情区| 成年18网站免费视频网站| 中文字幕乱码免费看电影| 亚洲精品中文字幕| 亚洲美女aⅴ久久久91| 国产亚洲精品AA片在线观看不加载| 日本在线高清免费爱做网站| 免费无码av片在线观看| 免费看内射乌克兰女| 亚洲夂夂婷婷色拍WW47| 久久亚洲精品成人无码网站| 亚洲色婷婷综合开心网| 国产精品免费看香蕉| 免费无码黄十八禁网站在线观看 | 成人免费视频试看120秒| 无码专区AAAAAA免费视频| 国产人成网在线播放VA免费| 亚洲heyzo专区无码综合| 亚洲偷自精品三十六区| 亚洲日本一区二区|