lambda 不需要异常处理



想象一下有这个方法:

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

IllegalArgumentExceptionRuntimeException的子类:

RuntimeException 及其子类是未经检查的异常。 不需要在方法或 构造函数的抛出子句,如果它们可以通过执行 方法或构造函数并在方法外部传播或 构造函数边界。

最新更新