ckecked Exception和Unchecked Exception异常

Throwable 是所有 Java 程序中错误处理的父类

Error JVM

Exception 程序

Checked Exception:继承java.lang.Exception

代表程序不能控制的无效外界情况。除了Error以及RuntimeException(运行时异常)及其子类,如:ClassNotFoundException, NamingException, ServletException, SQLException, IOException等。JAVA 编译器强制要求try catch处理throws声明抛出异常。

Unchecked Exception:继承java.lang.RuntimeException

Error  Java运行系统中的内部错误以及资源耗尽的情形 (JVM 所侦测到的无法预期的错误,导致 JVM 无法继续执行)应用程序不应该抛出这种类型的对象(一般是由虚拟机抛出).假如出现这种错误, 除了尽力使程序安全退出外,在其他方面是无能为力的.所以,在进行程序设计时,应该更关注Exception体系.(OutOfMemoryError、ThreadDeath、stackoverflowerror)

RuntimeException   假如出现一定是程序员的错误。运行时异常,我们可以不处理。当出现这样的异常时,总是由虚拟机 接管。

RuntimeException出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由 Thread.run()抛出 ,如果是单线程就被 main() 抛出 。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是 Exception 的子类,也有一般异常的特点,是可以被 Catch 块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。 在这个场景这样处理可能是一个比较好的应用,但并不代表在所有的场景你都应该如此。如果在其它场景,遇到了一些错误,如果退出程序比较好,这时你就可以不太理会运行时异常 ,或者是通过对异常的处理显式的控制程序退出。

异常处理的目标之一就是为了把程序从异常中恢复出来 。

RuntimeException:

1)IllegalArgumentException抛出的异常表明向方法传递了一个不合法或不正确的参数

2)NullPointerException当应用程序试图在需要对象的地方使用 null 时,抛出该异常

3)ArrayIndexOutOfBoundsException当使用的数组下标超出数组允许范围时,抛出该异常

4)ClassCastException当试图将对象强制转换为不是实例的子类时,抛出该异常

5)NumberFormatException当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常。

6)  ArithmeticException(整数除0时发生)

参考:http://blog.csdn.net/xiaoyu19910321/article/details/72937731

面试问题:

1.try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

http://www.cnblogs.com/hongten/p/hongten_java_finally.html

原文地址:https://www.cnblogs.com/L-a-u-r-a/p/8506814.html

时间: 2024-10-29 10:40:55

ckecked Exception和Unchecked Exception异常的相关文章

Java中的checked exception和unchecked exception

Java中的checked exception和unchecked exception Java中有两种异常:checked exception和unchecked exception. checked exception checked exception是这样定义: A checked exception is an exception that must be either caught or declared in a method where it can be thrown. 也就是

异常处理—checked exception 和 unchecked exception

异常的Root Class是Throwable,Throwable派生了Error和Exception. Java 8 API Doc中对checked exception和unchecked exception 的说明: 1. checked exception:(在Exception类中的说明) The class Exception and any subclasses that are not also subclasses of RuntimeException are checked

checked exception和unchecked exception区别

http://blog.csdn.net/yuefengyuan/article/details/6204317 一. Java 中定义了两类异常: 1) Checked exception: 这类异常都是Exception的子类 .异常的向上抛出机制进行处理,如果子类可能产生A异常,那么在父类中也必须throws A异常.可能导致的问题:代码效率低,耦合度过高.C#中就没有使用这种异常机制. 2) Unchecked exception: 这类异常都是RuntimeException的子类,虽

java中的Checked Exception和Unchecked Exception的区别

Java 定义了两种异常: - Checked exception: 继承自 Exception 类是 checked exception.代码需要处理 API 抛出的 checked exception,要么用 catch 语句,要么直接用 throws 语句抛出去. - Unchecked exception: 也称 RuntimeException,它也是继承自 Exception.但所有 RuntimeException 的子类都有个特点,就是代码不需要处理它们的异常也能通过编译,所以它

【转】Java异常:选择Checked Exception还是Unchecked Exception?

Java包含两种异常:checked异常和unchecked异常.C#只有unchecked异常.checked和unchecked异常之间的区别是: Checked异常必须被显式地捕获或者传递,如Basic try-catch-finally Exception Handling一文中所说.而unchecked异常则可以不必捕获或抛出. Checked异常继承java.lang.Exception类.Unchecked异常继承自java.lang.RuntimeException类. 有许多支

Checked Exception & Unchecked Exception

查Spring事务管理时看到一句话: Spring使用声明式事务处理,默认情况下,如果被注解的数据库操作方法中发生了unchecked异常,所有的数据库操作将rollback:如果发生的异常是checked异常,默认情况下数据库操作还是会提交的. 那么,什么是Checked Exception & Unchecked Exception ? Unchecked Exception: a. 指的是程序的瑕疵或逻辑错误,并且在运行时无法恢复. b. 包括Error与RuntimeException及

java异常—检查异常(checked exception)和未检查异常(unchecked exception)

网易面试要我画异常的结构图,什么是检查异常,什么是非检查异常,我当时的表情是这样的,.我看过,忘了.没办法,继续看,写博客掌握. 先来看看异常的结构图,建议你结合JDK一起看. 可以看出异常的家族势力庞大,通常我们说的异常是包括exceptio和error. Exception家族我们恐怕见的不少,但是error家族我们可能就没什么印象了,下面我来说说这两个类的区别: Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题.大多数的错误与代码编写者执行的操作无关,而是表示代码运行

检查型异常(Checked Exception)和非检查型异常(Unchecked Exception)的区别

最近温故spring事务相关知识点,我们知道Spring的事务管理默认只对出现运行期异常(java.lang.RuntimeException及其子类)进行回滚 (至于为什么spring要这么设计:因为spring认为Checked的异常属于业务的,程序猿需要给出解决方案而不应该直接扔该框架) 这里就引出一个小的知识点,什么是Checked Exception?什么是Unchecked Exception? 其实,Java语言规范对这两个定义十分简单,将派生于Error或者RuntimeExce

[转]Unchecked Exception 和 Checked Exception 比较

Throwable类是所有异常的始祖,它有两个直接子类Error / Exception:   Error仅在Java虚拟机中发生动态连接失败或其它的定位失败的时候抛出一个Error对象.一般程序不用捕捉或抛出Error对象. Unchecked Exception: a. 指的是程序的瑕疵或逻辑错误,并且在运行时无法恢复. b. 包括Error与RuntimeException及其子类,如:OutOfMemoryError, UndeclaredThrowableException, Ille