首页 > 解决方案 > 用于尝试、捕获和最终用于 Scanner 和 BufferedReader 的正确方法

问题描述

试图在我的主要方法中为 Scanner 和 BufferedReader 了解 try-catch-finally 的最佳和最有效的方法。应该有两个不同的捕获或将它们合并为一个?

    public static void main(String[] args) throws IOException {
    //open file input stream
    try {
        BufferedReader reader = new BufferedReader(new FileReader("DATABASE.txt"));

        //read file line by line
        String line = null;
        Scanner scan = null;

        BST tree = new BST();
        line = reader.readLine();

        while(line != null) {
            Employee emp = new Employee();
            scan = new Scanner(line);
            scan.useDelimiter(",");

            while(scan.hasNext()){
                emp.setEmployeeID(Integer.parseInt(scan.next()));
                emp.setFirstName(scan.next());
                emp.setLastName(scan.next());
                emp.setSalary(Double.parseDouble(scan.next()));
                line = reader.readLine();
            }
            tree.insert(emp);
        }
        reader.close();
        tree.inOrder();
        //System.out.println(empList);
    } catch(IOException e){
        e.printStackTrace();
    }

标签: javatry-catchioexception

解决方案


一个 catch 块就足够了。您可以添加一个 finally 块来关闭阅读器和扫描仪实例(如果它们不为空)。这样,无论 try 块是否正常完成或抛出异常,它们都将被关闭。应该添加空检查,因为 try 块可能无法达到两个对象的初始化,因为可能会发生异常。


推荐阅读