`
javaeyetodj
  • 浏览: 431581 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Unchecked Exception 和 Checked Exception 比较

 
阅读更多

转自 http://czj4451.iteye.com/blog/1851825

和 http://my.oschina.net/u/1589656/blog/228977

 

Throwable类是所有异常的始祖,它有两个直接子类Error / Exception: 
  Error仅在Java虚拟机中发生动态连接失败或其它的定位失败的时候抛出一个Error对象。一般程序不用捕捉或抛出Error对象。 

Unchecked Exception: 
a. 指的是程序的瑕疵或逻辑错误,并且在运行时无法恢复。 
b. 包括Error与RuntimeException及其子类,如:OutOfMemoryError, UndeclaredThrowableException, IllegalArgumentException, IllegalMonitorStateException, NullPointerException, IllegalStateException, IndexOutOfBoundsException等。 
c. 语法上不需要声明抛出异常。 

Checked Exception: 
a. 代表程序不能直接控制的无效外界情况(如用户输入,数据库问题,网络异常,文件丢失等) 
b. 除了Error和RuntimeException及其子类之外,如:ClassNotFoundException, NamingException, ServletException, SQLException, IOException等。 
c. 需要try catch处理或throws声明抛出异常。

有点困惑的是:RuntimeException (Unchecked)是Exception (Checked)的子类。 

public class GenericException extends Exception {
	public GenericException() {
	}

	public GenericException(String message) {
		super(message);
	}
}

 

public class TestException {
	public void first() throws GenericException {
		throw new GenericException("Generic exception"); // Checked Exception需要显式声明抛出异常或者try catch处理
	}
	
	public void second(String msg) {
		if (msg == null)
			throw new NullPointerException("Msg is null"); // Unchecked Exception语法上不需要处理
	}
	
	public void third() throws GenericException {
		first(); // 调用有Checked Exception抛出的方法也需要try catch或声明抛出异常
	}

	public static void main(String[] args) {
		TestException test = new TestException();
		try {
			test.first();
		} catch (GenericException e) {
			e.printStackTrace();
		}
		
		test.second(null);
	}
}

 

 

exception和runtimeexception的区别,异常的转换,异常在运行过程中的分析

1 exception和runtimeexception的区别分析

异常的超级父类是throwable,实现的2个子类是error和exception,error是错误类,这里不做分析。

Exception下面有众多子类,就是众多异常。Exception异常主要分为两个类型,一个是runtimeException和它的子类,还有一种就是除此之外的异常类。

先分析runtimeexception以及它的子类,这个类型的异常的特点是不必在方法中声明,调用者不需要知道异常的可能存在,也不必去处理异常。原因是这个类型的异常并不是由程序的功能不完善或者程序本身造成的异常,而是由程序员在调用程序时由于自己的操作而导致的异常的发生,比如:数组角标越界异常。程序员在运行完程序后,得知异常的提示,可以马上通过正确的调用去改正它。

除了runtimeexception以及它的子类以外的异常类,都需要在方法中声明,这类异常都是由于程序本身功能的不完善,需要提醒调用者可能会出现的异常,这样的异常怎么去处理会在异常的运行过程的分析中提到。

2异常的转换

异常的转换代码体现是在通过try catch语句捕获异常后并没有在catch的语句里处理该异常,而是继续以新的异常抛出,抛出的异常由原来的异常转换为另一种异常来等待处理。

代码:

Try{}catch(Exception e){throw new Exception(“这里是转换后的异常”)}

异常的转换通常用在这样的需求下:你去atm上取钱,发现钱出的少了,你打电话给银行,银行肯定不会立马来处理这个异常,这时,你需要把你的异常转换下,你打电话告诉银行,钱出的多了,银行会立马来处理这个异常。这个例子就是异常的转换。

3异常在运行过程中的分析

异常可以在方法中声明抛出,也可以在语句中抛出。

在语句中抛出异常,那么这个语句所在的方法就接到了这个异常,方法就有2个选择:继续抛出或者处理,抛出就在方法上抛出即可,处理的话用try,catch对抛出异常的语句处理即可。方法如果继续抛出,那么调用这个方法的调用语句所在的方法就会接住这个异常,调用者同样有上述的两个选择。如果最后的主方法也没有处理,那么异常就会体现在项目,作品上

分享到:
评论

相关推荐

    Checked and Unchecked Exception

    异常分为两种类型:已检查异常(Checked Exception)和未检查异常(Unchecked Exception)。 **已检查异常(Checked Exception)** 已检查异常是那些在编译时需要处理的异常。Java强制程序员要么在方法签名中声明...

    Java中Error与Exception的区别.doc

    在 Java 中,定义了两类异常:Checked exception 和 Unchecked exception。 Checked exception 是 Exception 的子类,它们的异常向上抛出机制进行处理。例如,如果子类可能产生 A 异常,那么在父类中也必须 throws ...

    Java throw Exception实现异常转换

    一、什么是checked exception和unchecked exception? 在Java语言中,异常分为两种:checked exception和unchecked exception。checked exception是编译器强制检查的异常,它们通常是业务逻辑中预期的异常,例如...

    Java常见工具类及异常处理

    在本文中,我们将详细介绍 Java 异常处理机制,包括 try、catch、finally 块、throws、throw 关键字、Exception 和 Error 类、Checked Exception 和 Unchecked Exception 等概念,并提供了多种异常处理的示例代码,...

    详解Java中的checked异常和unchecked异常区别

    Exception类层次则分为两种:checked异常和unchecked异常。 二、checked异常和unchecked异常的区别 checked异常是指编译器可以检查的异常,例如IOException、SQLException等。这些异常是在编译时检查的,如果程序...

    exception类处理

    Exception类本身又分为两个子类:Checked Exception和Unchecked Exception。 Checked Exception(检查型异常)是那些在编译时必须被处理的异常,例如IOException、SQLException等。如果方法可能会抛出这些异常,...

    基于JAVA语言的异常处理探讨分析 (1).pdf

    JAVA语言的异常可以分为两大类:Checked Exception和Unchecked Exception。Checked Exception是编译器强制捕获的异常,而Unchecked Exception是运行时抛出的异常。常见的Checked Exception包括IOException、...

    java异常(Exception)处理机制详解

    Exception 又分为两类:CheckedException 和 UncheckedException。 CheckedException 需要用 try...catch... 显示的捕获,而 UncheckedException 不需要捕获。 三、 异常的使用 异常的使用可以分为两类:Checked...

    通过实例了解java checked和unchecked异常

    通过实例了解 Java checked 和 unchecked 异常 Java 异常分为两种类型:checked 异常和 unchecked 异常。checked 异常是可以在执行过程中恢复的,例如无效的用户输入、文件不存在、网络或者数据库链接错误等。这些...

    Java常见基础知识总结

    Java基础知识总结 Java是一种广泛使用的编程语言,掌握Java基础知识是每个Java开发者所必需...* Checked Exception和Unchecked Exception的区别 * Throwable类常用方法 * 泛型的应用 * 反射机制 * IO操作 * 注解的应用

    浅谈Java异常.docx

    通过合理地划分`CheckedException`和`UncheckedException`,我们可以更好地管理程序的异常情况,提高代码的健壮性和可读性。在实际编程中,应该根据异常的性质和预期的处理方式来选择合适的异常类型,从而确保程序在...

    exception 异常处理 exception

    - **Checked Exception**:编译器强制要求捕获或声明抛出的异常类型,如 `IOException`。 - **Unchecked Exception**:运行时异常,编译器不会检查,如 `NullPointerException`。 #### 三、自定义异常 自定义...

    Java异常处理机制及其在项目中的应用.pdf

    Java 异常处理机制可以分为两大类:Checked Exception 和 Unchecked Exception。Checked Exception 是在编译期检查的异常,而 Unchecked Exception 是在运行期检查的异常。 在 Java 中,异常对象都是继承自 ...

    Python中处理unchecked未捕获异常实例

    和Java一样,python也提供了对于checked exception和unchecked exception. 对于checked exception,我们通常使用try except可以显示解决,对于unchecked 异常,其实也是提供回调或者是钩子来帮助我们处理的,我们可以在...

    Java语言程序设计基础篇课后题答案-Chapter17ExceptionsandAssertions.pdf

    本资源对Java语言程序设计基础篇的Chapter 17 Exceptions and Assertions进行了详细的解释和知识点总结,涵盖了Java异常类的继承结构、claiming exceptions、checked exception和unchecked exception、throw语句和...

    Java的checked和unchecked异常

    Java异常分为两种类型,checked异常和unchecked异常,另一种叫法是异常和错误。  简单地讲,checked是可以在执行过程中恢复的,而unchecked异常则是无法处理的错误。  checked异常:  表示无效,不是程序中...

    Java面向对象及异常_附件.pdf

    Java中的异常可以分为两类:Checked Exception和Unchecked Exception。Checked Exception是指编译器可以检查的异常,如IOException、SQLException等。Unchecked Exception是指编译器不能检查的异常,如...

    Error类和Exception类剖析

    Exception是所有可抛出异常的基类,分为两种主要类型:Checked异常和Unchecked异常。 1. Checked异常(例如IOException、SQLException等)是可控制的,意味着在编译期间必须显式处理这些异常。如果一个方法可能抛出...

Global site tag (gtag.js) - Google Analytics