达成例外后如何继续?

时间:2016-11-30 15:28:18

标签: java

我的代码旨在循环浏览文件,然后添加,然后显示总计。目前,它正确处理错误,但是当它遇到不正确的数据(非整数)时,它只是给出了直到文本文件的那一行的总数。我想要的是它继续前进,因为前面的数据可能仍然是整数。我怎样才能做到这一点?不仅如此,但我对InputMismatchException的捕获并未显示适当的错误。

我的代码:

public class HandlingTheException {

public static void main(String[] args) {
    int integerTotal = 0;
    int i;
    Scanner scan = null;
    File integerFile = new File ("someintegers.txt");

    try {
        scan = new Scanner (integerFile);
        System.out.println("File contents: " );

        while (scan.hasNextInt()) {
            i = scan.nextInt();
            integerTotal += i;
            System.out.println(i);
        }

        System.out.println("File total: " + integerTotal + ". ");
        System.out.println("Finished. ");
        scan.close();
    }
    catch (InputMismatchException e1) {
        System.err.println("Incorrect data type within file. Use integer only." );
    }
    catch (FileNotFoundException e2) {
        System.err.println(integerFile.getName()+" does not exist");
    }
}

该文件的一个示例: 10 20 三十 40 50 六十< ---当它到达这一行时程序将停止。它给出了总数,直到这一点,但它可以继续包括70,80,90,100 ....如何? 70 80 90 100

1 个答案:

答案 0 :(得分:0)

将错误导致代码放在try / catch块中,并在正确记录后吃掉异常。

while (scan.hasNextInt()) {
        try {
            i = scan.nextInt();
        } catch (Exception e) {
             i =0;
            //logging if necessary
        }
        integerTotal += i;
        System.out.println(i);
    }

而不是Exception,您可以捕捉更具体的NumberFormatException