Overview

  • 在java编程思想中对异常的定义:阻止当前方法或作用域继续执行的问题
  • 异常相关的知识点并不复杂,主要难点在于实际处理过程中对异常处理的设计。

异常的分类

  • java exception分为Error和Exception,这两类都是接口Throwable的子类。具体关系如下图:
  • 其中:
    • Error仅发生在jvm中,用户无需在程序中捕获或抛出Error。
    • Exception分为一般的Exception和RuntimeException两大类。
  • checked vs unchecked:
    • checked:一般是程序不能直接控制的外界情况,是指在编译时就需要检查的一类Exception,用户程序中必须try catch或者throws。包括除Error和RuntimeException及其子类之外的异常
    • unchecked:指的是那些不需要在编译期间就处理的一类异常。不需要try catch等机制处理。

Error

  • Error:用于指示合理的应用程序不应该试图捕获的严重问题。
  • 比如说VirtualMachineError:当 Java 虚拟机崩溃或用尽了它继续操作所需的资源时,抛出该错误。该错误就直接交给JVM吧。

Exception

  • Exception:它指出了合理的应用程序想要捕获的条件。
  • Exception又分为两类:一种是CheckedException,一种是UncheckedException(通常又叫RuntimeException)。这两种Exception的区别主要是CheckedException需要用try...catch...显示的捕获,而UncheckedException不需要捕获。
  • 常见的RuntimeExcepiton有IllegalArgumentException、IllegalStateException、NullPointerException、IndexOutOfBoundsException等等。