今天我们来看看Java 7异常处理方面的功能增强。来自Coin项目的又一个细微语言增强已经被包含在Java 7中:由谷歌专任工程师兼Java讲师Neal Gafter提出的Java增强异常处理功能。Open JDK开发的领导者Joe Darcy已经在其博客上宣布了这个变化。
此次变动增加了两处对异常处理机制的细微增强:
◆Multicatch:开发者现在能够在一个catch代码块中捕获多个异常类型;
◆Final Rethrow:它可以让开发者捕获一个异常类型及其子类型,并且无需向方法声明中增加抛出子句,就能重新将其抛出。
过去我们在捕获多个异常类型时,往往会使用以下类型的代码:
1.} catch (FirstException ex) {
2. logger.error(ex);
3. throw ex;
4.} catch (SecondException ex) {
5. logger.error(ex);
6. throw ex;
7.}
但是以上代码除了冗长外没有什么优点。一个解决办法是找出这两个异常类型的共同子类型,只对其进行捕获并抛出。但是这种方法通常会捕获一些你并不需要的异常。
现在借助于新增的功能,开发者可以使用以下代码:
8.} catch (FirstException | SecondException ex) {
9. logger.error(ex);
10. throw ex;
11.}
这种代码看上去要简洁清晰的多。
第二个增强功能要复杂一些。假如开发者希望捕获所有异常,在进行必要的几个操作后,再将其抛出。就代码编写而言并不是一件难事,但是开发者必须在方法声明中增加一个抛出子句,来管理自己代码发出的新异常。而现在借助于Final Rethrow,开发者无需增加一个异常抛出子句就能完成此项任务:
12.try {
13. // some code
14.} catch (final Throwable ex) {
15. // some more code
16. throw ex;
17.}
18.
通过使用final关键字,开发者可以抛出所需的准确动态类型异常。这样如果一个IOException异常发生,那么IOException 将被抛出。当然,开发者必须声明不被捕获的异常。如果开发者在try代码块(在//some more code部分)中没有捕获任何异常,抛出子句则与以前完全相同;反之如果捕获到某些异常,开发者则可以进行相应处理。
Java 7中的multi-catch是一个非常好的功能,但是final rethrow对程序员来说并不常用。
分享到:
相关推荐
这些项目不仅涵盖了Java的基础语法,还涉及面向对象编程、异常处理、多线程、I/O流等核心概念。 首先,项目开始阶段,教师应引导学生分析项目需求,明确项目目标,这有助于学生理解为什么要学习特定的Java知识。...
Spring支持四种通知类型:前置通知(Before)、后置通知(After)、环绕通知(Around)和异常通知(After-Throwing)。 Spring AOP的实现主要依赖于两种技术:动态代理和AspectJ。对于接口,Spring使用Java动态代理...
5. **事件处理**:增强了对流程事件的处理能力,如信号事件、错误事件等。 6. **任务服务**:提供了强大的任务管理功能,包括任务分配、任务查询、任务完成等。 ### 三、使用JBPM4.4开发 1. **安装和配置**:首先...
### 基于MVC的Struts框架初探:深入解析与应用 #### 引言:框架的意义与必要性 在JavaWeb应用的早期发展阶段,JSP文件扮演着多重角色,包括业务逻辑处理、控制流程管理以及HTML页面的生成。这种高度耦合的设计导致...
此外,还可以考虑引入异常处理机制,增强程序的健壮性。 对于想进一步完善这个系统的开发者,可以考虑以下几个方面: 1. 增加图形用户界面:利用Python的Tkinter或Java的Swing等库,打造更直观、友好的用户交互...
《MyFirstCalculator:初探Java编程与计算器应用开发》 在IT行业中,开发个人项目是提升技能、积累经验的重要方式之一。"MyFirstCalculator"是一个典型的个人实践项目,通过这个项目,开发者可以深入理解Java语言的...
1. **安全编程**:使用Java、C和C++进行开发时,理解这些语言的安全特性至关重要,如Java的异常处理、C++的内存管理以及防止缓冲区溢出等。 2. **Linux内核接口**:深入理解Android如何与Linux内核交互,掌握系统...
C#支持类、接口、继承、多态等面向对象特性,还引入了自动垃圾回收、异常处理和类型安全等现代编程概念。在我们的文本文档编辑器项目中,这些基础知识将构成程序的基石。 二、文本编辑器的基本功能 1. 文件操作:...
本话题主要探讨的是“初始LoadRunner动态链接库”,即如何在LoadRunner环境中理解和使用动态链接库(DLL)来增强测试功能。 【描述】: "LoadRunner动态链接库是其强大功能的一个重要组成部分,它允许测试工程师...
- **4.2.6 异常处理**:处理ICE通信过程中可能出现的异常。 - **4.2.7 类映射**:将Slice中的类映射到C++类。 **4.3 服务器端Slice到C++的映射** - **4.3.1 服务器端程序流程**:描述了服务器端程序的一般流程。 -...
【课程选课系统初探——基于Java技术】 在IT领域,尤其是高等教育管理信息化的过程中,选课系统扮演着至关重要的角色。本项目名为"courseSelect",是一个初步版本的大学选课系统,它主要使用Java语言进行开发。在这...
- **异常和中断处理**:改进了异常和中断处理机制,提高了实时任务的处理速度。 - **数据访问灵活性**:支持非对齐数据访问以及混合端数据访问,这不仅简化了数据共享和软件移植的过程,还有助于节省内存空间。 ###...
这一部分可能涉及到算法设计和异常处理,Java的多线程和事件驱动编程模型可以实现快速响应。同时,预警信息可能会通过邮件、短信或其他通知方式发送,这需要用到Java的第三方库,如JavaMail API。 报告生成则是为了...
异常处理也是Spring处理Web应用的一个亮点,它提供了一种统一的方式来处理Web层的异常。 国际化支持是Spring框架中另一个高级特性,它使得开发者能够方便地构建支持多语言的Web应用。同时,Spring还支持与WebWork2...
概述Python的一些高级特性,如异常处理、装饰器、迭代器和生成器,这些特性增强了语言的灵活性和表达能力。 #### 第10章:构建模块 教授如何创建自定义模块,包括编写扩展库和使用C语言进行性能优化的方法,适合于...