java mutilcatch_Java 7异常新特性之mutilcatch
歷經(jīng)4年,Java7終于和大家見面。關(guān)于Java7的新特性,詳見這里。
Java7增強(qiáng)了Java的異常處理機(jī)制,主要表現(xiàn)為三個(gè)方面:捕捉多種異常類型(multicatch);重新拋出(rethrow)異常;簡化資源清理(try-with-resources)
捕捉多種異常類型
從Java7開始,你就可以在一個(gè)catch塊中捕捉多種類型的異常了。增加multicatch的特性的主要是為了降低重復(fù)代碼和較少過大范圍的異常捕捉(例如這樣的捕捉 catch(Exception e))。
假如你正開發(fā)這樣一個(gè)應(yīng)用程序,這個(gè)程序可以靈活地將數(shù)據(jù)復(fù)制到數(shù)據(jù)庫或者文件中,清單1(CopyToDatabaseOrFile.java)模擬了這種程序, 展示了在catch模塊中存在重復(fù)代碼的現(xiàn)象:
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克服了這種代碼重復(fù)的問題。你只需在一個(gè)catch塊中指定多個(gè)需要處理的異常,將這些異常按順序排列,并用“|”分隔每個(gè)異常。如:
Java代碼
try{
copy();
}catch(IOException?|?SQLException?ex){
System.out.println(ex.getMessage());
}
現(xiàn)在,當(dāng)copy()方法拋出任何一種類型,都會(huì)在catch塊中被捕捉。
當(dāng)在catch中聲明多種異常時(shí),被聲明的異常默認(rèn)為final的,也就是說不能再修改異常的引用。如上例中,不能再將ex賦值給另外一個(gè)異常(如ex=new MyException())。
【編輯推薦】
【責(zé)任編輯:金賀 TEL:(010)68476606】
點(diǎn)贊 0
總結(jié)
以上是生活随笔為你收集整理的java mutilcatch_Java 7异常新特性之mutilcatch的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 富文本编辑器 java_Java开发之富
- 下一篇: java用递归删除文件夹_Java中通过