Java语言规范将派生于Error类或RuntimeException 类的所有异常称为非受查( unchecked ) 异常,所有其他的异常称为受查(checked) 异常。 编译器将核查是否为所有的受査异常提供了异常处理器。一个方法必须声明所有可能抛出的受查异常, 而非受查异常要么不可控制( Error),要么就应该避免发生。
如果在子类中覆盖了超类的一个方法, 子类方法中声明的受查异常不能比超类方法中声明的异常更通用 (也就是说, 子类方法中可以抛出更特定的异常, 或者根本不抛出任何异常)。特别需要说明的是, 如果超类方法没有抛出任何受查异常, 子类也不能抛出任何受查异常。