`
androidssh
  • 浏览: 115698 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

初探Java 7异常处理功能增强

    博客分类:
  • java
阅读更多

 Java异常处理语法是指是Java开发者最为头疼的事情,也是整个Java程序语言中受到舆论攻击最多的一部分。在Jdk7的研发过程中,对Java异常处理语法进行改进成为重要任务。

  此次变动增加了两处对异常处理机制的细微增强:

  ◆Multicatch:开发者现在能够在一个catch代码块中捕获多个异常类型;

  ◆Final Rethrow:它可以让开发者捕获一个异常类型及其子类型,并且无需向方法声明中增加抛出子句,就能重新将其抛出。

  过去我们在捕获多个异常类型时,往往会使用以下类型的代码:

} catch (FirstException ex) {  
    logger.error(ex);  
    throw ex;  
} catch (SecondException ex) {  
    logger.error(ex);  
    throw ex;  

  但是以上代码除了冗长外没有什么优点。一个解决办法是找出这两个异常类型的共同子类型,只对其进行捕获并抛出。但是这种方法通常会捕获一些你并不需要的异常。

  现在借助于新增的功能,开发者可以使用以下代码:

} catch (FirstException | SecondException ex) {  
    logger.error(ex);  
    throw ex;  
}
  这种代码看上去要简洁清晰的多。

  第二个增强功能要复杂一些。假如开发者希望捕获所有异常,在进行必要的几个操作后,再将其抛出。就代码编写而言并不是一件难事,但是开发者必须在方法声明中增加一个抛出子句,来管理自己代码发出的新异常。而现在借助于Final Rethrow,开发者无需增加一个异常抛出子句就能完成此项任务:

try {  
    // some code  
} catch (final Throwable ex) {  
    // some more code  
    throw ex;  
}  

  通过使用final关键字,开发者可以抛出所需的准确动态类型异常。这样如果一个IOException异常发生,那么IOException将被抛出。当然,开发者必须声明不被捕获的异常。如果开发者在try代码块(在//some more code部分)中没有捕获任何异常,抛出子句则与以前完全相同;反之如果捕获到某些异常,开发者则可以进行相应处理。

  Java 7中的multi-catch是一个非常好的功能,但是final rethrow对程序员来说并不常用。

原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/database/295/11307295.shtml

分享到:
评论

相关推荐

    项目教学法在java教学中的应用初探.zip

    这些项目不仅涵盖了Java的基础语法,还涉及面向对象编程、异常处理、多线程、I/O流等核心概念。 首先,项目开始阶段,教师应引导学生分析项目需求,明确项目目标,这有助于学生理解为什么要学习特定的Java知识。...

    初探spring aop内部实现 java

    Spring支持四种通知类型:前置通知(Before)、后置通知(After)、环绕通知(Around)和异常通知(After-Throwing)。 Spring AOP的实现主要依赖于两种技术:动态代理和AspectJ。对于接口,Spring使用Java动态代理...

    JBPM4.4 使用之流程管理初探

    5. **事件处理**:增强了对流程事件的处理能力,如信号事件、错误事件等。 6. **任务服务**:提供了强大的任务管理功能,包括任务分配、任务查询、任务完成等。 ### 三、使用JBPM4.4开发 1. **安装和配置**:首先...

    基于MVC的Struts框架初探

    ### 基于MVC的Struts框架初探:深入解析与应用 #### 引言:框架的意义与必要性 在JavaWeb应用的早期发展阶段,JSP文件扮演着多重角色,包括业务逻辑处理、控制流程管理以及HTML页面的生成。这种高度耦合的设计导致...

    学生成绩管理系统

    此外,还可以考虑引入异常处理机制,增强程序的健壮性。 对于想进一步完善这个系统的开发者,可以考虑以下几个方面: 1. 增加图形用户界面:利用Python的Tkinter或Java的Swing等库,打造更直观、友好的用户交互...

    MyFirstCalculator:必须做,因为有时我不做我的工作!

    《MyFirstCalculator:初探Java编程与计算器应用开发》 在IT行业中,开发个人项目是提升技能、积累经验的重要方式之一。"MyFirstCalculator"是一个典型的个人实践项目,通过这个项目,开发者可以深入理解Java语言的...

    Android-Shadow.zip

    1. **安全编程**:使用Java、C和C++进行开发时,理解这些语言的安全特性至关重要,如Java的异常处理、C++的内存管理以及防止缓冲区溢出等。 2. **Linux内核接口**:深入理解Android如何与Linux内核交互,掌握系统...

    C#文本文档编辑器

    C#支持类、接口、继承、多态等面向对象特性,还引入了自动垃圾回收、异常处理和类型安全等现代编程概念。在我们的文本文档编辑器项目中,这些基础知识将构成程序的基石。 二、文本编辑器的基本功能 1. 文件操作:...

    初始LoadRunner动态链接库

    本话题主要探讨的是“初始LoadRunner动态链接库”,即如何在LoadRunner环境中理解和使用动态链接库(DLL)来增强测试功能。 【描述】: "LoadRunner动态链接库是其强大功能的一个重要组成部分,它允许测试工程师...

    ICE中间件教程

    - **4.2.6 异常处理**:处理ICE通信过程中可能出现的异常。 - **4.2.7 类映射**:将Slice中的类映射到C++类。 **4.3 服务器端Slice到C++的映射** - **4.3.1 服务器端程序流程**:描述了服务器端程序的一般流程。 -...

    courseSelect

    【课程选课系统初探——基于Java技术】 在IT领域,尤其是高等教育管理信息化的过程中,选课系统扮演着至关重要的角色。本项目名为"courseSelect",是一个初步版本的大学选课系统,它主要使用Java语言进行开发。在这...

    Android Applications (1) Introduction to the Development.pdf

    - **异常和中断处理**:改进了异常和中断处理机制,提高了实时任务的处理速度。 - **数据访问灵活性**:支持非对齐数据访问以及混合端数据访问,这不仅简化了数据共享和软件移植的过程,还有助于节省内存空间。 ###...

    LiFuLong:生鲜农产品运输监测与预警系统的引入代码

    这一部分可能涉及到算法设计和异常处理,Java的多线程和事件驱动编程模型可以实现快速响应。同时,预警信息可能会通过邮件、短信或其他通知方式发送,这需要用到Java的第三方库,如JavaMail API。 报告生成则是为了...

    Spring开发指南

    异常处理也是Spring处理Web应用的一个亮点,它提供了一种统一的方式来处理Web层的异常。 国际化支持是Spring框架中另一个高级特性,它使得开发者能够方便地构建支持多语言的Web应用。同时,Spring还支持与WebWork2...

    Beginning Python Using Python 2.6 and Python 3.1 - James W. Payne.pdf )

    概述Python的一些高级特性,如异常处理、装饰器、迭代器和生成器,这些特性增强了语言的灵活性和表达能力。 #### 第10章:构建模块 教授如何创建自定义模块,包括编写扩展库和使用C语言进行性能优化的方法,适合于...

Global site tag (gtag.js) - Google Analytics