попробуй поймай против попробуй с ресурсами - PullRequest
2 голосов
/ 13 июня 2019

Почему в readFile2() мне нужно поймать FileNotFoundException, а затем IOException, который генерируется методом close(), а в try-with-resources(inside readfile1) Java не просит меня обработать FileNotFoundException что случилось?

public class TryWithResourcesTest {

    public static void main(String[] args) {

    }

    public static void readFile1() {
        try(Reader reader = new BufferedReader(new FileReader("text.txt"))) {
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void readFile2() {
        Reader reader = null;
        try {
            reader = new BufferedReader(new FileReader("text.txt"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if(reader != null)
                reader.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

}

1 Ответ

6 голосов
/ 13 июня 2019

FileNotFoundException является подклассом IOException.Поймав второе, вы тоже поймаете первое.Это не имеет ничего общего с try-catch и try-with-resources.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...