处理两个单独的语句引发的相同类型的异常

时间:2019-02-14 17:05:44

标签: java exception-handling

以下代码段引发错误 1.当输入文件路径无效时-FILENOTFOUNDEXCEPTION 2.在excel中打开输出文件时-FILENOTFOUNDEXCEPTION表示该文件是在另一个进程中打开的

我建议用户检查输入文件路径或关闭打开的excel(或在记事本中打开)。我如何分别捕获它们?

try(FileReader fr = new FileReader("D:/Test.log");
            BufferedReader br = new BufferedReader(fr);) {      

        doSomething(br);

        //writing to CSV
        String[]  arr = {"aaa","bbb"};
        FileWriter outputfile= new 
        FileWriter("D:/output.csv",false); 
        CSVWriter writer = new CSVWriter(outputfile); 
            writer.writeNext(arr);
            writer.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

1 个答案:

答案 0 :(得分:0)

您应将代码分为两个try / cath语句

BufferedReader br;
try {
    FileReader fr = new FileReader("D:/Test.log");
    br = new BufferedReader(fr);
} catch (FileNotFoundException e) {
    e.printStackTrace();
    log.error("Input file not found");
} catch (IOException e) {
    e.printStackTrace();
}

doSomething(br);

//writing to CSV
String[]  arr = {"aaa","bbb"};

try {
    FileWriteroutputfile = new FileWriter("D:/output.csv",false);
    CSVWriter writer = new CSVWriter(outputfile);
    writer.writeNext(arr);
    writer.close();
} catch (IOException e) {
    e.printStackTrace();
    log.error("Output file already in use");
}