try catch執行順序


try catch是編程中總會出現的一組搭檔,在運行時異常中我們可以添加他們進行代碼的客戶端的友好性提示,在檢測性異常是他們是必不可少的一份子,組合機構如下

try{

       //業務邏輯的小集合

}catch(Exception e){

       //異常的捕獲

}finally{

      //無論是否異常,我都在這里,不離不棄

}

那么異常的執行順序如何呢,簡單說明如下

try-catch-finally-return finally -return catch---return function

也就是說當程序出現異常時,如果我在finally中填寫了return,那么最后return的出發點在finally,但是如果我在catch中填寫了return那么程序在執行了finally后回執行catch的return,

如下代碼輸出

publicStringtest(){

inti =1;

intj =0;

try{

    i = i+1;

    j = i/j;

    return"try"+i++;

}catch(Exception e){

    i = i+1;

    e.printStackTrace();

    return"catch"+i++;

}finally{

    i = i+1;

}

}

若在finally中添加return則返回值為5,但在catch中添加,返回值為3,為什么會這樣呢,為什么先執行了finally再進行返回,但返回結果不是5呢,

這和返回機制有關,當執行到catch時,將返回值3放到了返回棧中,執行finally結束后返回棧進行返回,並未影響i的值,但如果finally中也有return,則將覆蓋返回棧中的值



作者:非小惰
鏈接:https://www.jianshu.com/p/4b21c0dddbe5
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM