異常處理機制中的return關鍵字
阿新 • • 發佈:2018-03-08
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()); } publicstatic 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關鍵字