方法 javax.tools.ToolProvider.getSystemTool(Class clazz, String moduleName, String className) 具有以下主体(JDK 12):
private static <T> T getSystemTool(Class<T> clazz, String moduleName, String className) {
try {
ServiceLoader<T> sl = ServiceLoader.load(clazz, ClassLoader.getSystemClassLoader());
for (Iterator<T> iter = sl.iterator(); iter.hasNext(); ) {
T tool = iter.next();
if (matches(tool, moduleName))
return tool;
}
} catch (ServiceConfigurationError e) {
throw new Error(e);
}
return null;
}
我不明白为什么作者使用最广泛的错误类而不是类似throw new ToolProviderError(e)
甚至根本不重新抛出的东西?任何具有广泛错误类的重新抛出都无助于在不深入研究异常链的情况下理解这里发生的事情。