`
javaeyetodj
  • 浏览: 426227 次
  • 性别: 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

    NULL 博文链接:https://caerun.iteye.com/blog/726904

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

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

    Java的checked和unchecked异常

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

    php中error与exception的区别及应用

    Error都是unchecked类型 Exception分为checked 与 unchecked类型 且把异常与错误都当作程序运行不正常的现象来看待 如果区分异常与错误的话: 异常:非致命的。try{}catche(Exception e){} 执行中的try模块是测试...

    java 面试常见问题整理

    Checked Exception 和 Unchecked Exception 有什么区别? Throwable 类常用方法有哪些? try-catch-finally 如何使用? finally 中的代码一定会执行吗? 如何使用 try-with-resources 代替try-catch-finally? I/O ...

    什么是Java中的异常处理机制?Java中的异常分为哪些类型?(java面试题附答案).txt

    Java中的异常分为三种类型:检查型异常(Checked Exception)、非检查型异常(Unchecked Exception)和错误(Error)。 检查型异常(Checked Exception): 这些异常在代码中必须进行显式处理,否则编译器会报错。 ...

    exception-framework

    在java的世界里,异常是一个永恒的话题,很...使用checked exception 还是 unchecked exception?成为了衡量一个java程序员是高手还是菜鸟的标准。exception-framework提供了一种托管异常的方案,值得我们去研究学习。

    Error类和Exception类剖析

    Exception: 1.可以是可被控制(checked) 或不可控制的(unchecked)。 2.表示一个由程序员导致的错误。 3.应该在应用程序级被处理。

    基础深化和提高-异常机制

    Java中的异常分为已检查异常(checked exception)和未检查异常(unchecked exception)。已检查异常需要在方法签名中声明或者通过try-catch块进行捕获和处理,否则编译器会报错。未检查异常通常是RuntimeException...

    Android崩溃异常捕获方法

    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。...Exception分为两类:一种是CheckedException,一种是UncheckedException。这两种Exception的区别主要是CheckedException需要用try…catch…显

    同花顺java面试笔试题-Java-Interview:面试问题和程序

    和Error 之外,直接继承Throwable class称为Checked 异常,例如IOException、SQLException 等。Checked 异常在编译时检查。 2. Unchecked Exception :继承RuntimeException的类被称为 unchecked 异常,例如 ...

    java中异常的笔试题-java_interview_questions:发表于https://sathish2905.github.io/j

    和Error 之外,直接继承Throwable class称为Checked 异常,例如IOException、SQLException 等。Checked 异常在编译时检查。 2. Unchecked Exception :继承RuntimeException的类被称为 unchecked 异常,例如 ...

    同花顺java面试笔试题-java-interview-questions:java面试题

    和Error 之外,直接继承Throwable class称为Checked 异常,例如IOException、SQLException 等。Checked 异常在编译时检查。 2. Unchecked Exception :继承RuntimeException的类被称为 unchecked 异常,例如 ...

    同花顺java面试笔试题-JSInterviewQuestions:JS面试题

    和Error 之外,直接继承Throwable class称为Checked 异常,例如IOException、SQLException 等。Checked 异常在编译时检查。 2. Unchecked Exception :继承RuntimeException的类被称为 unchecked 异常,例如 ...

    同花顺java面试笔试题-Interview-Questions:Java面试问题

    和Error 之外,直接继承Throwable class称为Checked 异常,例如IOException、SQLException 等。Checked 异常在编译时检查。 2. Unchecked Exception :继承RuntimeException的类被称为 unchecked 异常,例如 ...

    同花顺java面试笔试题-java-interview-:java-面试-

    和Error 之外,直接继承Throwable class称为Checked 异常,例如IOException、SQLException 等。Checked 异常在编译时检查。 2. Unchecked Exception :继承RuntimeException的类被称为 unchecked 异常,例如 ...

    java面试题笔试题-java-interview-questions:1000多个Java面试问题

    和Error 之外,直接继承Throwable class称为Checked 异常,例如IOException、SQLException 等。Checked 异常在编译时检查。 2. Unchecked Exception :继承RuntimeException的类被称为 unchecked exceptions,例如 ...

    Android 捕获运行时异常详解

    Android 异常分为两类:CheckedException 和 UnCheckedException CheckException:在编译代码时就需要进行try()catch捕获的。 UnCheckException:所有的运行时异常,RuntimeException类和他的子类,都是在APP运行...

Global site tag (gtag.js) - Google Analytics