Как поймать FileNotFoundException для двух файлов?

У меня есть два текстовых файла, и я хочу создать исключение, если файлы не найдены. У меня есть класс FileReader, который проверяет, существуют ли файлы, и в моем основном я пытаюсь поймать исключение.

    public FileReader() throws FileNotFoundException {
         super();
         File file1 = new File("file1.txt");
         File file2 = new File("file2.txt");

         //Throws the FileNotFoundException if the files aren't found
         if (!file1.exists()) {
             throw new FileNotFoundException("File \"file1.txt\" was not found.");
         } else {
         //do something
         }
         if (!file2.exists()) {
             throw new FileNotFoundException("File \"file2.txt\" was not found.");
         } else {
         //do something
         }

В другом классе я хочу поймать исключение, если файлы отсутствуют.

public class FileIO {

public static void main(String[] args) {

    try {
         //do stuff
    } catch(FileNotFoundException e) {
        System.out.println(e.getMessage());
    } 

Это прекрасно работает, если отсутствует только один файл. Но если отсутствуют и файл1, и файл2, я перехватываю исключение только для первого отсутствующего файла, после чего программа завершается. Мой вывод:

File "file1.txt" is not found.

Как я могу поймать исключение для обоих? Я хочу, чтобы он выводил:

File "file1.txt" is not found.
File "file2.txt" is not found.

person Han Brolo    schedule 17.07.2016    source источник


Ответы (1)


Вы можете создать сообщение об ошибке, прежде чем создавать исключение.

public FileReader() throws FileNotFoundException {
    super();
    File file1 = new File("file1.txt");
    File file2 = new File("file2.txt");

    String message = "";

    if (!file1.exists()) {
        message = "File \"file1.txt\" was not found.";
    }
    if (!file2.exists()) {
        message += "File \"file2.txt\" was not found.";
    }

    //Throws the FileNotFoundException if the files aren't found
    if (!messag.isEmpty()) {
        throw new FileNotFoundException(message);
    }

    //do something
person Pan Long    schedule 17.07.2016
comment
Блестящий. Спасибо. - person Han Brolo; 17.07.2016