java - 必须捕获或声明要抛出未报告的异常:
问题描述
我有这段代码,虽然有 LombokSneakyThrows
注释,但编译器仍然抱怨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);
}
解决方案
编译器抱怨是因为你告诉它unregister()
抛出一个检查异常。从方法声明中删除 ,throws RemoteException
以便 Lombok 可以对编译器隐藏检查的异常。
推荐阅读
- android - 基线对齐微调器到 ConstraintLayout 中的 TextInputLayout
- python - 如何根据类似条目在 python 中对 ND 数组求和?
- spring - Hibernate 尝试持久化已分离的现有实体
- rust - 实现 trait 或取消引用 trait 的类型的泛型类型
- python - 比较从 pynput 返回的数据
- firebase - 如何在 Firebase 上查询——Flutter
- azure-cosmosdb - 如何从 CosmosDB Gremlin API DB 下载所有数据?
- ruby - DataTables & Ruby - 在每个块中限制一个语句?
- python - Pytest -k 选项不限制测试功能的运行
- php - 一张桌子的多个模型 Laravel