Imagina tener este método:

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

Y luego llamándolo de esta manera:

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

Dado que la firma incluye throws IllegalArgumentException, ¿por qué no hay necesidad de try-catch la llamada a listDirectoryFiles?

0
payne 22 oct. 2019 a las 17:14

1 respuesta

La mejor respuesta

IllegalArgumentException es una subclase de < a href = "https://docs.oracle.com/javase/7/docs/api/java/lang/RuntimeException.html" rel = "noreferrer"> RuntimeException :

RuntimeException y sus subclases son excepciones sin marcar. Las excepciones no marcadas no necesitan ser declaradas en un método o cláusula throws del constructor si pueden ser lanzados por la ejecución de el método o constructor y propagarse fuera del método o límite del constructor.

5
xingbin 22 oct. 2019 a las 14:16