使用IOException调用方法

时间:2015-12-02 22:20:27

标签: java bluej

我无法调用此函数来处理文本文件。 我尝试调用它但抛出异常。我尝试了各种方法,但迄今为止没有任何工作。

public static void spracujSubor () throws IOException {
    File f = new File("test.txt");

    Scanner sc = new Scanner(f);

    try {
        while(sc.hasNextLine()) { 
            String nazov = sc.next(); 
            String model = sc.next(); 
            double cena = sc.nextDouble(); 

            Auto rep = new Auto(nazov, model,cena); 
            aPozicovna.aAuto.add(rep);  
        }
    } catch(IOException ioe){
        System.err.println(ioe);
    }
    sc.close(); 
}

1 个答案:

答案 0 :(得分:0)

首先,如果您(至少)没有向我们展示异常消息,我们无法帮助您找出导致IOException的原因。完整的堆栈跟踪是理想的,但是你帮忙的消息很多。

有多个地方可以抛出IOException,包括:

  1. new Scanner(f)中,如果文件不存在,不可读,路径名错误,还有其他几种情况。

  2. 在循环中对Scanner对象的各种调用中,具体取决于您的文件语法。

  3. close()电话中......理论上。

  4. 其中一些是在try-catch中。其他人在之前或之后。对于try catch中的情况,您将捕获异常,打印消息,然后继续进行,就好像什么都没发生一样。那很不好。这是一个更好的结构...... 没有压缩异常。

    public static void spracujSubor () throws IOException {
        File f = new File("test.txt");
        try (Scanner sc = new Scanner(f)) {
            while(sc.hasNextLine()) { 
                String nazov = sc.next(); 
                String model = sc.next(); 
                double cena = sc.nextDouble(); 
    
                Auto rep = new Auto(nazov, model,cena); 
                aPozicovna.aAuto.add(rep);  
            }
        } 
    }
    

    请注意,由于ScannerAutocloseable,因此当您退出try-with-resources时,它会自动关闭。