Обработка исключений не требуется для лямбды - PullRequest
0 голосов
/ 22 октября 2019

Представьте себе, что у вас есть этот метод:

public static File[] listDirectoryFiles(File directory) throws IllegalArgumentException {
    if (!directory.isDirectory())
        throw new IllegalArgumentException("Enter a directory");
    return directory.listFiles(File::isDirectory);
}

И затем вы называете его так:

File myDir = new File("C:\\Users\\bobby\\Downloads");
Arrays.asList(listDirectoryFiles(myDir)).forEach(System.out::println);

Поскольку подпись включает в себя throws IllegalArgumentException, почему нет необходимости на самом деле try-catch вызов listDirectoryFiles?

1 Ответ

5 голосов
/ 22 октября 2019

IllegalArgumentException является подклассом RuntimeException:

RuntimeException и его подклассы являются непроверенными исключениями. Непроверенные исключения не нуждаются в объявлении в предложении метода или конструктора throws, если они могут быть выброшены при выполнении метода или конструктора и распространяться за пределы метода или конструктора.

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