Java的异常

Java语言规范将派生于Error类或RuntimeException类的所有异常称为非受查 ( unchecked) 异常, 所有其他的异常称为受查(checked) 异常。

Error 类层次结构描述了 Java 运行时系统的内部错误和资源耗尽错误。 应用程序不应该抛出这种类型的对象。

在自己编写方法时, 不必将所有可能抛出的异常都进行声明。至于什么时候需要在方法 中用 throws 子句声明异常, 什么异常必须使用 throws 子句声明, 需要记住在遇到下面 4 种 情况时应该抛出异常:

1 ) 调用一个抛出受査异常的方法, 例如, FilelnputStream 构造器。

2 ) 程序运行过程中发现错误, 并且利用 throw 语句抛出一个受查异常(下一节将详细地 介绍 throw 语句 )。

3 ) 程序出现错误, 例如, a[- l ]= 0 会抛出一个 ArraylndexOutOffloundsException 这样的 非受查异常。

4 ) Java 虚拟机和运行时库出现的内部错误。

如果出现前两种情况之一, 则必须告诉调用这个方法的程序员有可能抛出异常。 为什 么? 因为任何一个抛出异常的方法都有可能是一个死亡陷阱。如果没有处理器捕获这个异 常, 当前执行的线程就会结束。

对于那些可能被他人使用的Java方法,应该根据异常规范(exceptionspecification), 在方法的首部声明这个方法可能抛出的异常。

class HyAnimation {
     public Image loadlmage(String s) throws IOException {
    } 
}

也不应该声明从 RuntimeException 继承的那些非受查异常。这些运行时错误完全在我们的控制之下。

    class HyAnimation {
        void drawlmage(int i) throws ArrayIndexOutOfBoundsException
        {
        }
    }

总之, 一个方法必须声明所有可能抛出的受查异常, 而非受查异常要么不可控制(Error), 要么就应该避免发生(RuntimeException)。

posted on 2020-12-15 16:20  冯亮  阅读(76)  评论(0编辑  收藏  举报

导航