1. 程式人生 > >異常處理機制中的return關鍵字

異常處理機制中的return關鍵字

nal text HR trac warning font pda turn nbsp

Java中,執行try-catch-finally語句需要註意:

第一:return語句並不是函數的最終出口,如果有finally語句,這在return之後還會執行finally(return的值會暫存在棧裏面,等待finally執行後再返回)

第二:finally裏面不建議放return語句,根據需要,return語句可以放在try和catch裏面和函數的最後。可行的做法有四種:   

  1)return語句只在方法最後出現一次。   

  2)return語句僅在try和catch裏面都出現。   

  3)return語句僅在try和方法最後都出現。   

  4)return語句僅在catch和方法的最後都出現。

註意,除此之外的其他做法都是不可行的,編譯器會報錯。

  (1)如果程序運行到try成功時可以返回結果,則采用方法2。

  (2)如果程序運行到catch時(即中途出錯時)無需再繼續執行後面的代碼了,則采取方法4。

  (3)如果程序運行到try或catch時還需要繼續執行後面的代碼,則采取方法1。

package cn.javaoppday01;

public class Text {

    public static void main(String[] args) {
           System.out.println(getResult());
    }
    public
static int getResult(){ int a =100; try{ a++; //此行執行的是try 原值為100,執行try的時候為101 return a; }finally{ a++; } } }
結果為101
package cn.day006;

public class Test2 {
     public static void main(String[] args) {
            
try{ System.out.println(getResult()); }catch(Exception e){ e.printStackTrace(); System.out.println("截獲異常catch"); }finally{ System.out.println("異常處理finally"); } } @SuppressWarnings("finally") public static int getResult() throws Exception{ int a =100; try{ a=a+10; throw new RuntimeException(); }catch(Exception e){ System.out.println("截獲異常並重新拋出異常"); throw new Exception(); }finally{ return a; } } }
結果為:
截獲異常並重新拋出異常
110
異常處理finally

即使在try塊,catch塊中存在return語句,finally塊中的語句也會執行,finally 塊中的語句不執行的唯一情況是,在異常處理代碼中執行System.exit(1);

在try--catch -finally 中 如果有return關鍵字的話 執行順序如下:

try --catch--finally -return

異常處理機制中的return關鍵字