我有这段代码,尽管带有Lombok SneakyThrows
批注,但编译器仍然抱怨Error:(65, 58) java: unreported exception java.rmi.RemoteException; must be caught or declared to be thrown:
@SneakyThrows
@Override
public Optional<Boolean> unregister() throws RemoteException {
if(registry != null) {
Arrays.asList(registry.list()).forEach(className -> {
registry.unbind(className);
});
}
return Optional.of(true);
}
上面调用此方法的方法是这样的:
@SneakyThrows
public void stopDatabase() {
if(registrar == null) {
LOG.error("Database has not started");
} else {
registrar.unregister();
}
}
将代码更新为此(解决问题) 但我们不想更改为使用for-loop:
@SneakyThrows
@Override
public Optional<Boolean> unregister() {
if (registry != null) {
String[] classNames = registry.list();
for(int i=0;i<classNames.length;i++) {
registry.unbind(classNames[i]);
}
}
return Optional.of(true);
}
答案 0 :(得分:2)
编译器在抱怨,因为您告诉它unregister()
引发了一个已检查的异常。从方法声明中删除throws RemoteException
,以便Lombok可以从编译器中隐藏已检查的异常。