文档

Java™ 教程-Java Tutorials 中文版
指定方法抛出的异常
Trail: Essential Classes
Lesson: Exceptions

指定方法抛出的异常

上一节介绍了如何为 ListOfNumbers 类中的 writeList 方法编写异常处理程序。有时,代码捕获可能在其中发生的异常是合适的。但是,在其他情况下,最好让调用堆栈中的方法进一步处理异常。例如,如果你将 ListOfNumbers 类作为类包的一部分提供,则可能无法预测包的所有用户的需求。在这种情况下,最好 不要 捕获异常并允许进一步向上调用堆栈的方法来处理它。

如果 writeList 方法没有捕获可能在其中发生的检查型异常,则 writeList 方法必须指定它可以抛出这些异常。让我们修改原始的 writeList 方法来指定它可以抛出的异常而不是捕获它们。提醒你,这是 writeList 方法的原始版本,无法编译。

public void writeList() {
    PrintWriter out = new PrintWriter(new FileWriter("OutFile.txt"));
    for (int i = 0; i < SIZE; i++) {
        out.println("Value at: " + i + " = " + list.get(i));
    }
    out.close();
}

要指定 writeList 可以抛出两个异常,请将 throws 子句添加到 writeList 方法的方法声明中。throws 子句包含 throws 关键字,后跟逗号分隔的该方法抛出的所有异常列表。该子句在方法名称和参数列表之后,在定义方法范围的大括号之前;这是一个例子。

public void writeList() throws IOException, IndexOutOfBoundsException {

请记住 IndexOutOfBoundsException 是非检查型异常;在 throws 子句中包含它不是强制性的。你可以写下面的内容。

public void writeList() throws IOException {

Previous page: Putting It All Together
Next page: How to Throw Exceptions