Java 7非常新特征之mutilcatch 架构&设计

来源:互联网 / 作者:SKY / 2017-11-21 19:53 / 点击:
Java7加强了Java的非常处理赏罚机制,首要示意为三个方面:捕获多种非常范例(multicatch);从头抛出(rethrow)非常;简化资源整理(try-with-resources)
Tech Neo技能沙龙 | 11月25号,九州云/ZStack与您一路切磋云期间收集界线打点实践

历经4年,Java7终于和各人晤面。关于Java7的新特征,详见这里。

Java7加强了Java的非常处理赏罚机制,首要示意为三个方面:捕获多种非常范例(multicatch);从头抛出(rethrow)非常;简化资源整理(try-with-resources)

捕获多种非常范例

从Java7开始,你就可以在一个catch块中捕获多种范例的非常了。增进multicatch的特征的首要是为了低落一再代码和较少过大范畴的非常捕获(譬喻这样的捕获 catch(Exception e))。

若是你正开拓这样一个应用措施,这个措施可以机动地将数据复制到数据库可能文件中,时代站长网,清单1(CopyToDatabaseOrFile.java)模仿了这种措施, 展示了在catch模块中存在一再代码的征象:

Java代码

// CopyToDatabaseOrFile.java          import java.io.IOException;          import java.sql.SQLException;          public class CopyToDatabaseOrFile {                    public static void main(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          }          }                    static void copy() throws IOException, SQLException {         if (Math.random() < 0.5)          throw new IOException("cannot copy to file");          else          throw new SQLException("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())。

阅读延展

1
3