Java:检查异常与未检查异常

1、异常的介绍

  Throwable 是 Java 中全部错误和异常的超类。Java 虚拟机仅抛出属于此类(或其子类之一)的实例对象,或者是 throw 语句也能够抛出该对象。一样,catch 子句中的参数类型也只能是此类(或其子类之一)。处于编译时检查异常为目的,Throwable 和其部分子类(除开 RuntimeException、Error 及它们其子类)都被视为检查的异常(checked exceptions),又称为运行时的异常,剩下的都是未检查的异常(unchecked exceptions)。
java

  一个 throwable 包含它建立时线程执行堆栈的快照。它还能够包含一个消息字符串,该字符串提供有关该错误的更多信息。随着时间的流逝,一个throwable能够抑制其余 throwables 的传播。最后,throwable 还能够包含一个缘由:另外一个致使该 throwable 构造的 throwable。此因果信息的记录称为连接异常机制,由于缘由自己能够具备缘由,依此类推,致使异常的“链”,每一个异常都是由另外一个缘由引发的。数组

2、Java异常结构层次图

   图中仅列出一些比较常见的异常,还有绝大部分没有展示出来,可见 Java异常家族之大。还有就是 Error 那一块的东西对于我来讲几乎没有碰到过,表示运行应用程序中较严重问题,大多数错误与代码编写者执行的操做无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,当 JVM 再也不有继续执行操做所需的内存资源时,将出现 OutOfMemoryError。 Exception 是程序自己能够处理的异常。也就是你常见的空指针异常(NullPointerException),数组超出范围异常(IndexOutOfBoundsException)等等。spa

3、检查的异常和非检查的异常

  Java的异常(包括Exception和Error)分为已检查的异常(checked exceptions)和非检查的异常(unchecked exceptions)。线程

① 检查的异常

  编译器要求你必须处置的异常,代码还没运行,编译器就会检查你的代码,会不会出现异常,要求你对可能出现的异常必须作出相应的处理。指针

  对检查异常(checked exception)的几种处理方式:对象

  1.  继续抛出,消极的方法,一直能够抛到java虚拟机来处理,就是经过throws exception抛出。
  2.  用try...catch捕获

  注意,对于检查的异常必须处理,或者必须捕获或者必须抛出。除 RuntimeException 与其子类,以及 Error,其余的都是检查异常。blog

② 非检查的异常

  编译器不要求强制处置的异常,不会在编译的时候检查,一一去检查会使得工做变得更加繁琐,只能在运行时才能检查出来,好比空指针异常等。内存

  对未检查的异常(unchecked exception )的几种处理方式:资源

  1. 捕获字符串

  2. 继续抛出

  3. 不处理

  通常咱们是不处理的,由于你很难判断会出什么问题,并且有些异常你也没法运行时处理,好比空指针,须要人手动的去查找。RuntimeException与其子类,以及错误(Error),都是属于这类异常。

相关文章
相关标签/搜索