想象一下有这个方法:
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
?
IllegalArgumentException
是RuntimeException
的子类:
RuntimeException 及其子类是未经检查的异常。 不需要在方法或 构造函数的抛出子句,如果它们可以通过执行 方法或构造函数并在方法外部传播或 构造函数边界。