java mutilcatch_Java 7异常新特性之mutilcatch
歷經4年,Java7終于和大家見面。關于Java7的新特性,詳見這里。
Java7增強了Java的異常處理機制,主要表現為三個方面:捕捉多種異常類型(multicatch);重新拋出(rethrow)異常;簡化資源清理(try-with-resources)
捕捉多種異常類型
從Java7開始,你就可以在一個catch塊中捕捉多種類型的異常了。增加multicatch的特性的主要是為了降低重復代碼和較少過大范圍的異常捕捉(例如這樣的捕捉 catch(Exception e))。
假如你正開發這樣一個應用程序,這個程序可以靈活地將數據復制到數據庫或者文件中,清單1(CopyToDatabaseOrFile.java)模擬了這種程序, 展示了在catch模塊中存在重復代碼的現象:
Java代碼
//?CopyToDatabaseOrFile.java
importjava.io.IOException;
importjava.sql.SQLException;
publicclassCopyToDatabaseOrFile?{
publicstaticvoidmain(String[]?args)?{
try{
copy();
}catch(IOException?ex)?{
System.out.println(ex.getMessage());//?additional?handler?code
}catch(SQLException?ex)?{
System.out.println(ex.getMessage());//?additional?handler?code?that's?identical?to?the?previous?handler's?//?code
}
}
staticvoidcopy()throwsIOException,?SQLException?{
if(Math.random()?<0.5)
thrownewIOException("cannot?copy?to?file");
else
thrownewSQLException("cannot?copy?to?database");
}
}
清單1: CopyToDatabaseOrFile.java
Java7克服了這種代碼重復的問題。你只需在一個catch塊中指定多個需要處理的異常,將這些異常按順序排列,并用“|”分隔每個異常。如:
Java代碼
try{
copy();
}catch(IOException?|?SQLException?ex){
System.out.println(ex.getMessage());
}
現在,當copy()方法拋出任何一種類型,都會在catch塊中被捕捉。
當在catch中聲明多種異常時,被聲明的異常默認為final的,也就是說不能再修改異常的引用。如上例中,不能再將ex賦值給另外一個異常(如ex=new MyException())。
【編輯推薦】
【責任編輯:金賀 TEL:(010)68476606】
點贊 0
總結
以上是生活随笔為你收集整理的java mutilcatch_Java 7异常新特性之mutilcatch的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 富文本编辑器 java_Java开发之富
- 下一篇: java用递归删除文件夹_Java中通过