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

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

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

    異常問(wèn)題

    Posted on 2012-11-09 16:00 志成中國(guó) 閱讀(197) 評(píng)論(0)  編輯  收藏
    java try catch 誰(shuí)先執(zhí)行問(wèn)題,你能說(shuō)明白嗎
    問(wèn)題1 
     try {}里有一個(gè)return語(yǔ)句,那么緊跟在這個(gè)try后的finally {}里的code會(huì)不會(huì)被執(zhí)行,什么時(shí)候被執(zhí)行,在return前還是后? 
    也許你的答案是在return之前,但往更細(xì)地說(shuō),我的答案是在return中間執(zhí)行,請(qǐng)看下面程序代碼的運(yùn)行結(jié)果: 
    public  class Test {
    public static void main(String[] args) {
    System.out.println(new Test().test());;
    }
    static int test()
    {
    int x = 1;
    try
    {
    return x;
    }
    finally
    {
    ++x;
    }
    }
    }
    ---------執(zhí)行結(jié)果是什么  為什么 ---------
    問(wèn)題2
    下面的程序代碼輸出的結(jié)果是多少?
    public class  smallT
    {
    public static void  main(String args[])
    {
    smallT t  = new  smallT();
    int  b  =  t.get();
    System.out.println(b);
    }
    public int  get()
    {
    try
    {
    return 1 ;
    }
    finally
    {
    return 2 ;
    }
    }
    }
           2012-6-19 16:23 滿意回答 輸出是1和2,
    20705080 回答的很好了,只有幾點(diǎn)補(bǔ)充下,首先代碼例子用的是基本數(shù)據(jù)類型,他們進(jìn)行傳值就是傳值,其次finally的用途是用來(lái)回收系統(tǒng)資源的,沒(méi)有catch也是正常的使用(不catch,把異常throw回調(diào)用方法),再有finally和return是有關(guān)系的,而且經(jīng)常有人提,就是finally的代碼在return前運(yùn)行,這就是我為什么先說(shuō)你的例子是基本數(shù)據(jù)類型的原因,因?yàn)閞eturn x(1);被放入stack中,stack是后進(jìn)先出的,等待finally運(yùn)行完再運(yùn)行,但他已經(jīng)被賦值了就是1,如果你把代碼改成這樣試試看
    public Something getSome(){
             Something s = new Something("Dog");
             try{
                  return s;
            }finally{
                 s.name ="cat";
             }}
    加個(gè)類
    class Something{
            public String name ;
            something(String name){
                   this.name = name;}
    }
    因?yàn)橄鄬?duì)于基本數(shù)據(jù)類型,引用傳值傳的值是個(gè)地址,return s(地址);放入stack中,又被取出時(shí)地址不變但地址那邊的數(shù)據(jù)已經(jīng)是cat了贊同0| 評(píng)論 
    第1個(gè)
    有finally的話
    try 里的return    是先保存x的結(jié)果   等待finally走完   雖然x變2了  但是return的值還是1  
    因?yàn)榈絩eturn的時(shí)候已經(jīng)把x的值取出來(lái)  等待finally走完  不管x怎么變  之前的1是不會(huì)變的
    第2個(gè)
    return     等待finally走完   但是finally里return了   所以返回的是2
        贊同0| 評(píng)論                2012-6-19 14:54 暢捷通丶稀飯 | 五級(jí) 
    第一個(gè)是1,因?yàn)?x=1 try里面返回的是1 后面又執(zhí)行了finally 后。X 是2 但是沒(méi)有返回。所以 還是1
    第二個(gè)是2,因?yàn)閒inally最后執(zhí)行,返回的是2. 贊同0| 評(píng)論                2012-6-19 14:56 java2000_net | 
    finally中的語(yǔ)句是一定要執(zhí)行的,這點(diǎn)是肯定的。finally中的語(yǔ)句執(zhí)行在try之后。通常try是要和catch(不捕獲異常try就沒(méi)意義了)。一般的用法是:
    try{
    1想要執(zhí)行的代碼
    }catch(Exception e){
     2異常處理
    }finally{
    3最終執(zhí)行的代碼
    }
    1中代碼沒(méi)錯(cuò)執(zhí)行的順序就是1->3
    1中代碼有錯(cuò)執(zhí)行的順序是2->3
    finally中的代碼和return是沒(méi)關(guān)系的,你可以把return寫在任何地方。它只和try、catch有關(guān)。假如你把問(wèn)題一種finally的代碼寫成:
    finally{
    return ++x;
    }那么結(jié)果就是2了。
    finally一定會(huì)執(zhí)行,且在try或catch之后執(zhí)行。
    不知道這么說(shuō)能明白嗎~~~
    不明白可以問(wèn),我再回答~~~ 贊同0| 評(píng)論                2012-6-19 15:22 黑夜也明亮 | 四級(jí) 
    問(wèn)題1:答案 1。因?yàn)閞eturn的值在執(zhí)行finally之前已經(jīng)確定下來(lái)了。所以即使在finally里怎么該值它始終是1,除非在finally里在return ++x重新修改返回的值。return x它不會(huì)直接返回值回去而是等程序執(zhí)行完finaly后才返回。
    你因該有聽(tīng)過(guò)有finaly的程序一定會(huì)執(zhí)行finaly代碼吧。
    問(wèn)題2:答案 2。根據(jù)一的結(jié)論二也是成立的。 贊同0| 評(píng)論                2012-6-19 16:41 iedgtg | 五級(jí) 
    第一個(gè)問(wèn)題:輸出的是1,因?yàn)閒inally總是在try-catch執(zhí)行之后執(zhí)行,而且,一定是在return之前執(zhí)行。第一個(gè)問(wèn)題里應(yīng)該是在return x;之前執(zhí)行,但是,此時(shí)return的值已經(jīng)固定了,就是說(shuō)finally再執(zhí)行也改變不了return的值,當(dāng)然x的值成了2,但是return的值已經(jīng)固定為1了。
    第二個(gè)問(wèn)題:輸出的是2,因?yàn)閒inally一定是在return之前執(zhí)行,本來(lái)程序return的值是1,即將要return了,但是有finally,所以finally先執(zhí)行,所以return的值是2。
    但是第二種情況不建議使用,就是說(shuō)finally里不建議用return,因?yàn)檫@樣finally就沒(méi)有正常的執(zhí)行完畢,這是不推薦的。 贊同0| 評(píng)論         

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    posts - 9, comments - 5, trackbacks - 0, articles - 0

    Copyright © 志成中國(guó)

    主站蜘蛛池模板: 国内精品免费在线观看| 久久亚洲sm情趣捆绑调教| 亚洲精品456人成在线| 亚洲黄色免费网站| 亚洲综合免费视频| 国产精品视频免费| 亚洲男人的天堂久久精品| 亚欧免费视频一区二区三区| 亚洲欧洲日韩在线电影| 亚洲精品国产免费| 国产成人精品日本亚洲专| 毛片a级毛片免费观看品善网| 亚洲最大的成人网| 在线观看91精品国产不卡免费| 亚洲狠狠婷婷综合久久蜜芽| 国产婷婷高清在线观看免费| 欧洲美女大片免费播放器视频| 久久亚洲中文字幕精品一区| 在线免费观看伊人三级电影| 亚洲人成在线观看| 永久免费av无码不卡在线观看| 亚洲一区二区三区高清在线观看| 国产精品免费视频播放器| 一级特黄a大片免费| 久久亚洲免费视频| 在线观看视频免费完整版| 黄网站色视频免费看无下截| 相泽亚洲一区中文字幕| 中文字幕免费视频一| 亚洲色精品VR一区区三区| 亚洲成A∨人片天堂网无码| 免费视频精品一区二区三区 | 野花高清在线观看免费3中文| 亚洲成av人片在线天堂无| 久久夜色精品国产亚洲av| 日韩精品免费一级视频| 污视频网站免费在线观看| 久久久久亚洲AV无码麻豆| 成人永久福利免费观看| 久久99精品视免费看| 99亚洲精品卡2卡三卡4卡2卡|