本教程是针对JDK 8编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
请参阅Java语言变化以了解Java SE 9及后续版本中更新的语言特性的摘要。
请参阅JDK版本说明以获取有关所有JDK版本的新功能、增强功能以及已删除或已弃用选项的信息。
上一节展示了如何为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
可以抛出两个异常,需要在writeList
方法的方法声明中添加一个throws
子句。该throws
子句由throws
关键字和一个以逗号分隔的该方法抛出的所有异常组成。该子句位于方法名和参数列表之后,在定义方法作用域的花括号之前;以下是一个示例。
public void writeList() throws IOException, IndexOutOfBoundsException {
请记住,IndexOutOfBoundsException
是一个未检查异常;将其包含在throws
子句中不是强制性的。您可以只写以下内容。
public void writeList() throws IOException {