历经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())。
【编辑推荐】
网页标题:Java 7异常新特性之mutilcatch
文章URL:http://www.shufengxianlan.com/qtweb/news0/304950.html
成都网站建设公司_创新互联,为您提供ChatGPT、移动网站建设、网站维护、关键词优化、静态网站、小程序开发
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联