指定方法引发的异常
上一节显示了如何为ListOfNumbers
类中的writeList
方法编写异常处理程序。有时,代码catch其中可能发生的异常是适当的。但是,在其他情况下,最好让调用堆栈更远的方法处理该异常。例如,如果您将ListOfNumbers
类作为类包的一部分提供,则可能无法预期包中所有用户的需求。在这种情况下,最好不要catch异常,并允许调用堆栈上方的方法来处理该异常。
如果writeList
方法没有catch其中可能发生的检查异常,则writeList
方法必须指定它可以引发这些异常。让我们修改原始的writeList
方法以指定它可以引发而不是catch它们的异常。提醒您,这是无法编译的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
可以引发两个异常,请在writeList
方法的方法声明中添加throws
子句。 throws
子句包含throws
关键字,后跟一个用逗号分隔的列表,列出了该方法引发的所有异常。该子句位于方法名称和参数列表之后,以及定义方法范围的括号之前;这是一个例子。
public void writeList() throws IOException, IndexOutOfBoundsException {
记住IndexOutOfBoundsException
是未经检查的异常;将其包含在throws
子句中不是强制性的。您可以编写以下内容。
public void writeList() throws IOException {