Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
当面对选择要抛出的异常类型时,你可以使用别人写的一个 Java 平台提供了很多可以使用的异常类 或者你可以自己写一个。如果你对以下任何问题的回答是肯定的,那么你应该编写自己的异常类;否则,你可能会使用别人的。
假设你正在编写链表类。该类支持以下方法,其中包括:
objectAt(int n)
返回列表中 n
位置的对象。如果参数小于 0 或大于列表中当前对象的数量,则抛出异常。firstObject()
返回列表中的第一个对象。如果列表不包含任何对象,则引发异常。indexOf(Object o)
在列表中搜索指定的 Object
并返回其在列表中的位置。如果传递给方法的对象不在列表中,则引发异常。链表类可以抛出多个异常,并且能够通过一个异常处理程序捕获链表所引发的所有异常是很方便的。此外,如果你计划在包中分发链接列表,则应将所有相关代码打包在一起。因此,链表应该提供自己的一组异常类。
下图 说明了链表引发的异常的一个可能的类层次结构。
示例异常类层次结构。
任何 Exception
子类都可以用作 LinkedListException
的父类。但是,快速浏览这些子类表明它们不合适,因为它们太专业化或与 LinkedListException
完全无关。因此,LinkedListException
的父类应该是 Exception
。
你编写的大多数 applet 和应用程序将抛出 Exception
的对象。Error
通常用于系统中严重的硬错误,例如阻止 JVM 运行的错误。
Exception
附加到从 Exception
类继承(直接或间接)的所有类的名称。