📜  使用 finally 块捕获异常的Java程序(1)

📅  最后修改于: 2023-12-03 14:49:39.428000             🧑  作者: Mango

使用 finally 块捕获异常的Java程序

在Java中,finally块是一种特殊的代码块,它紧跟在try块和catch块之后执行,无论是否发生异常都会执行。在处理异常时,finally块通常用于执行清理操作,例如释放资源、关闭数据库连接等。

下面是一个使用finally块捕获异常的Java程序示例。这个程序从控制台读取用户输入的数字,并计算它们的平均值。如果用户输入的是非数字字符,程序将抛出NumberFormatException异常。

import java.util.Scanner;

public class AverageCalculator {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        double sum = 0;
        int count = 0;

        try {
            while (true) {
                System.out.print("Enter a number: ");
                double num = Double.parseDouble(scanner.nextLine());
                sum += num;
                count++;
            }
        } catch (NumberFormatException e) {
            System.out.println("Invalid number format");
        } finally {
            scanner.close();
        }

        double average = sum / count;
        System.out.println("Average: " + average);
    }
}

在这个程序中,我们使用了一个try-catch-finally语句块来捕获异常和释放资源。在try块中,我们使用一个循环从控制台读取数字并计算它们的总和,直到用户输入一个非数字字符,这时程序将抛出NumberFormatException异常。在catch块中,我们打印出一个错误消息,告诉用户输入的内容无效。在finally块中,我们关闭了Scanner对象,以确保程序释放了所有资源。

值得注意的是,由于我们使用了finally块,无论有没有发生异常,Scanner对象都将被关闭。这是非常重要的,因为如果我们不关闭Scanner对象,程序将一直保持运行状态,直到用户终止它。

总之,finally块是一种非常有用的Java语言特性,它可以确保在try-catch语句块执行完毕后始终执行某些代码。在处理异常、释放资源等方面,finally块都是非常有用的。