Throwable类是Java语言中所有错误或异常的超类。只有当对象是此类(或其子类之一)的实例时,才能通过 Java 虚拟机或者throw语句抛出。类似地,只有此类或其子类之一才可以是catch子句中的参数类型。
两个子类的实例,Error和Exception,通常用于指示发生了异常情况。
通常,这些实例是在异常情况的上下文中新近创建的,因此包含了相关的
信息(比如堆栈跟踪数据)。
严重问题:Error,我们不处理,这种问题一般是很严重的问题,比如内存溢出
问题:Exception
编译期问题:不是RuntimeException的异常,这个必须处理,否则编译不通过。
运行期问题:RuntimeException,这种问题我们也不处理,需要修正代码。
Error是Throwable的子类,用于指示合理的应用程序不应该试图捕获的严重问题。大多数这样的错误都是异常条件。虽然ThreadDeath错误是一个“正规”的条件,但它也是Error的子类,因为大多数应用程序都不应该试图捕获它。
在执行该方法期间,无需在其throws子句中声明可能抛出但是未能捕获的Error的任何子类,因为这些错误可能是再也不会发生的异常条件。
Exception类及其子类是Throwable的一种形式,它指出了合理的应用程序想要捕获的条件。
RuntimeException是那些可能在Java虚拟机正常运行期间抛出的异常的超类。可能在执行方法期间抛出但未被捕获的RuntimeException的任何子类都无需在throws子句中进行声明。