在 try 块中访问变量

Access variable in try block

我想把方法头的throws FileNotFoundException去掉再放进去

public static String[] read(String file) throws FileNotFoundException {

但是我无法再访问 in(扫描仪)了!如何处理?

public static String[] read(String file) {
    try {
        Scanner in = new Scanner(new FileReader(file));
    }
    catch (Exception e) {
    }
    // ...
    in.close();
    // ...
}

只需使用try-with-resources,这样您就不必担心关闭扫描仪对象。

    try (Scanner in = new Scanner(new FileReader(file))) {
        //Your code
    }
    catch (Exception e) {
    }

in 变量的局部作用域为 try 块。您可以在 try 块之前声明变量,try 块内关闭 in。如果它从未成功打开,关闭它也没有多大用处。

变量 in 超出了 try 块的范围。您可以这样做:

public static String[] read(String file) {
    Scanner in = null;
    try {
        in = new Scanner(new FileReader(file));
    }
    catch (Exception e) {
    }
    finally() {
        in.close();
    }
    // ...
}

或者更好的是,尝试使用资源

public static String[] read(String file) {
    try (Scanner in = new Scanner(new FileReader(file))){
        String line = in.nextLine();
        // whatever comes next
    }
    catch (Exception e) {
    }
        
    // right here, the scanner object will be already closed
    return ...;
}

您可以尝试使用资源,允许自动关闭您的输入。

那样

   Scanner in ;
   try ( in = new Scanner(new FileReader(file))) {
  
    }
    catch (Exception e) {
    }