如何在输入文件中将多个异常打印到错误文件?

时间:2016-03-29 16:10:25

标签: java exception

我现在在计算机科学(java)课程中,我们的任务是创建一个程序,从input.txt文件中读取整数(教授会有这个)并将所有整数打印到输出中。 txt文件。任何异常/错误都需要打印到我们程序创建的errors.txt文件中。 (我们现在正在课堂上学习例外情况。)

我的程序能够读取输入文件并将整数打印到output.txt,但是我在打印出可能发生的所有异常时遇到问题。例如,如果输入文件的“abc”作为其中一行,则应在errors.txt文件中打印出一条消息,说明它不是整数。

我的程序会发生的情况是,只要抛出一个异常,即使有更多要打印的内容,也不会打印出所有其他异常。它就在那时停止了。

例如,像这样:

try{        

            while (fileScan.hasNext())
            {
                num = fileScan.nextInt();
            }

    }catch(Exception e)
    {               
        erout.println(e); //prints the error to the file.
        fileScan.nextLine();
    }

erout是error.txt文件的PrintWriter对象。 file.can用于i​​nput.txt。

我只是不确定如何让它遍历所有input.txt文件并跟踪它将抛出的所有异常,然后将所有这些异常打印到error.txt文件中。任何帮助将不胜感激,谢谢。 :)

3 个答案:

答案 0 :(得分:2)

您可以将while循环移到try语句之外。

while (fileScan.hasNext())
{
    try{        

            num = fileScan.nextInt();

    }catch(Exception e)
    {               
    erout.println(e); //prints the error to the file.
    fileScan.nextLine();
    }
}

答案 1 :(得分:1)

您需要重新订购whiletry / catch

List<Exception> exceptions = new ArrayList<>();
while (fileScan.hasNext()) {
    try {
         num = fileScan.nextInt();
         // more code here to process num
    } catch (Exception e) {
         // Might also want to create a custom exception type to track
         // The line/file that the error occurred upon.
         exceptions.add(e);
         fileScan.nextLine();
    }
}

答案 2 :(得分:0)

你要做的就是在一段时间内移动try / catch:

        while (fileScan.hasNext())
        {
            try {
                num = fileScan.nextInt();
            }
            catch (Exception e) {
                erout.println(e); //prints the error to the file.
                fileScan.nextLine();
            } 

        }