当为可为 null 的可选项抛出异常时,我遇到编译错误,要求我捕获异常或将异常声明为已抛出,但 NPE 是不需要捕获的运行时异常。所以基本上 orElseThrow 行为与抛出 java 8 之前的异常不同。这是一个特性还是一个错误?有什么想法吗?
这不编译:
protected String sendTemplate() {
String template = getTemplate();
return Optional.ofNullable(template).orElseThrow(() -> {
throw new NullPointerException("message");
});
}
这确实:
protected String sendTemplate() {
String template = getTemplate();
if (template == null){
throw new NullPointerException("message");
}
else return template;
}
ibeautiful
白衣非少年
相关分类