use*_*592 4 java exception list java-8 java-stream
我有一个字符串:
"1, 2, 3 , -4"
Run Code Online (Sandbox Code Playgroud)
它被","拆分.我有一个函数将数字转换为枚举类型,工作正常.我想使用java 8将此字符串转换为枚举对象列表.
Pattern pattern = Pattern.compile(", ");
List<f> fList = pattern.splitAsStream(str)
.map(s -> {
try {
return this.getEnumObject(Integer.valueOf(s), f.class);
}
catch (NoEleException e) {
e.printStackTrace();
}
})
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这给了我一个错误:
missing return type.
Run Code Online (Sandbox Code Playgroud)
我该怎么办呢?
基本上是管理这个的方法:
在第一种情况下,我们使用Optional在出错时将某些内容放入流中,然后在流中进一步管理这些空值:
pattern.splitAsStream(str)
.map(s -> {
try {
return Optional.of(this.getEnumObject(Integer.valueOf(s), f.class));
}
catch (NoEleException e) {
e.printStackTrace();
return Optional.empty();
}
})
.filter(Optional::isPresent) // remove empty optionals
.map(Optional::get) // unwrap them
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,流被停止,然后您可以尝试捕获 RuntimeException 并取消原始异常:
pattern.splitAsStream(str)
.map(s -> {
try {
return Optional.of(this.getEnumObject(Integer.valueOf(s), f.class));
}
catch (NoEleException e) {
e.printStackTrace();
throw new RuntimeException(e); // stop the stream
}
})
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1466 次 |
| 最近记录: |