`
cakin24
  • 浏览: 1384024 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

Java 6和Java 7对throw语句的不同理解

    博客分类:
  • java
阅读更多

1 代码示例

import java.io.*;

public class ThrowTest2
{
	public static void main(String[] args)
		// Java 6认为①号代码可能抛出Exception,
		// 所以此处声明抛出Exception
		throws Exception
		// Java 7会检查①号代码可能抛出异常的实际类型,
		// 因此此处只需声明抛出FileNotFoundException即可。
		//throws FileNotFoundException
	{
		try
		{
			new FileOutputStream("a.txt");
		}
		catch (Exception ex)
		{
			ex.printStackTrace();
			throw ex;        // ①
		}
	}
}

 

2 代码分析

Java 6对该代码理解:Java编译器处理“简单而粗暴”——由于在捕获该异常时声明ex类型是Exception,因此Java编译器认为这段代码可能抛出Exception异常,所以包含这段代码的方法通常需要声明抛出Exception异常。

Java 7对该代码理解:Java编译器会执行更细致的检查,Java 编译器会检查throw语句抛出异常的实际类型,这样编译器知道①号代码处实际上只可能抛出FileNotFoundException异常,因此在方法签名中只声明抛出FileNotFoundException异常即可。

0
0
分享到:
评论
1 楼 movingboy 2016-09-20  
你那行catch (Exception ex) 的写法本来就是不推荐的,应该写成catch (FileNotFoundException ex) 。Java 7是更加智能一点,就是帮你把这行代码改掉了,捕捉到异常后的处理其实没变

相关推荐

    Java的throw和return

    ### Java的throw和return 在Java编程语言中,`throw`和`return`是两个非常重要的关键字,它们分别用于处理异常和返回方法的结果。本文将详细介绍这两个关键字的用法、特点以及它们与`finally`块之间的关系。 #### ...

    java throw抛出异常实例二

    在Java编程语言中,异常处理是一...通过对`ThrowException_02.java`的深入分析,我们可以更好地理解`throw`的使用和异常处理的实践。同时,配合`Java.jpg`可能包含的图表或示意图,可以帮助我们更直观地理解这个概念。

    throws与throw的区别

    在Java编程中,throws和throw是兩個與异常处理相關的关键字,虽然它们都是用于处理异常的,但它们的使用场景和语法不同。下面我们将详细解释throws和throw的區別。 throws throws是方法抛出一个异常的声明,用于告...

    java throw抛出异常实例一

    `throw`关键字是Java中用于显式抛出异常的关键字。本实例将深入探讨如何使用`throw`来创建和处理自定义异常,以及它在实际编程中的应用。 首先,我们了解异常的基本概念。在Java中,异常是程序执行过程中遇到的不...

    Java中throws和throw的区别讲解.docx

    Java提供了多种方式来处理异常,其中`throw`和`throws`是最常用的两种。本文将详细介绍这两者的区别以及如何正确地使用它们。 #### 二、`throw`关键字 `throw`关键字用于在程序中明确地抛出一个异常对象。当程序...

    Java软件开发实战 Java基础与案例开发详解 10-4 使用throw和throws引发异常 共5页.pdf

    ### Java软件开发实战:使用throw和throws引发异常 #### 1. Java异常处理基础 在Java编程中,异常处理是一项非常重要的技术,用于处理程序运行过程中可能出现的各种异常情况。异常处理主要包括异常的捕获、处理...

    英文版java7入门经典

    通过大量的实例和练习,读者可以加深对Java语言的理解,并提升实际编程能力。 总之,《英文版Java 7入门经典》是一本全面且深入的教程,适合初学者和有一定经验的开发者阅读,无论你是想初次接触Java,还是希望深入...

    《面向对象程序设计JAVA语言程序设计》

    * Java 语言支持 try-catch 语句和 throw 语句 10. Java 语言的安全和可靠性: * Java 语言提供了安全和可靠性的机制 * Java 语言支持数字签名和加密技术 11. Java 语言的Applet和应用程序: * Java 语言支持 ...

    深入理解java异常处理机制Java开发Java经验技巧共

    在Java中,异常处理通过五个关键字来实现:try、catch、finally、throw和throws。 首先,`try`块是代码可能抛出异常的部分。当在try块中发生异常时,控制流会立即跳转到与该异常匹配的`catch`块。异常是Java中的一...

    java异常处理机制示例(java抛出异常、捕获、断言)

    在`LogerTest`类中,使用了`java.util.logging.Logger`来记录不同级别的日志信息,包括进入方法、普通信息、警告和严重错误。这对于调试和问题追踪非常有用。 断言(Assertion)是Java中的一个功能,用于在开发阶段...

    java流程控制语句

    Java流程控制语句的设计初衷就是为了使程序设计能够变得简单、清晰,并且易于维护和理解。掌握这些基本的流程控制语句对于编写高效的Java程序至关重要。程序设计本质上是解决问题的过程,而流程控制语句则是实现解决...

    面向对象编程C++和Java比较教程 中英文完整版 pdf

    在异常处理方面,C++使用try-catch-finally结构,而Java也有类似的try-catch-finally语句块,但Java还引入了throw关键字,用于明确抛出异常。此外,Java的异常类层次结构比C++更为规范。 在编程模型上,C++支持多...

    Java croe java 思想

    在异常处理部分,书里详述了Java的异常体系,包括检查型异常和运行时异常的区别,如何使用try-catch-finally语句块进行异常处理,以及何时使用throw和throws关键字。良好的异常处理习惯能够使程序更加健壮,提高代码...

    Java练习题库(含答案及解析).pdf

    Java中的异常处理机制包括try、catch、finally语句和throw、throws关键字。异常处理使得程序在遇到错误或不正常的条件时可以优雅地处理这些问题,而不是让程序崩溃。 Java中的垃圾回收机制自动管理内存,释放不再...

    java课件——全面介绍java知识

    这个"java课件——全面介绍java知识"提供了一套完整的Java学习资源,旨在帮助初学者和进阶者深入理解和掌握Java编程技术。 首先,让我们从基础开始。Java的核心概念包括类、对象、封装、继承、多态。类是对象的模板...

    Java JDK 6学习笔记_pdf版(附课本代码)

    Java JDK 6是Java开发工具集的一个重要版本...通过实际编写和运行代码,可以加深对Java JDK 6的理解,提升编程技能。在学习过程中,结合这些代码实例进行练习,将有助于理论知识与实践经验的融合,进一步提高编程能力。

    JAVA经典教程

    9. Java虚拟机(JVM):JVM是运行Java字节码的虚拟计算机,理解JVM的工作原理、内存管理、垃圾回收机制对优化Java程序性能至关重要。 10. Java 8特性:Java 8引入了许多新特性,如Lambda表达式、Stream API、新的...

Global site tag (gtag.js) - Google Analytics