私はJava 8ストリームを使用しています。ストリームのforeach内で例外をスローすることはできません。java 8ストリーム内で例外をスローするforeach
stream.forEach(m -> {
try {
if (isInitial) {
isInitial = false;
String outputName = new SimpleDateFormat(Constants.HMDBConstants.HMDB_SDF_FILE_NAME).format(new Date());
if (location.endsWith(Constants.LOCATION_SEPARATOR)) {
savedPath = location + outputName;
} else {
savedPath = location + Constants.LOCATION_SEPARATOR + outputName;
}
File output = new File(savedPath);
FileWriter fileWriter = null;
fileWriter = new FileWriter(output);
writer = new SDFWriter(fileWriter);
}
writer.write(m);
} catch (IOException e) {
throw new ChemIDException(e.getMessage(),e);
}
});
、これは私が上位レベルのエラーをログに記録するロガーを使用しています
public class ChemIDException extends Exception {
public ChemIDException(String message, Exception e) {
super(message, e);
}
}
私の例外クラスです。だから私は例外を上に投げたい。おかげ
私が見ることができるコードから、ストリームの代わりに 'for'ループを使用する必要があるようです。あなたは、機能的な環境に命令的なコードを置こうとしています。 – 4castle
私は大きなファイルを読んで、いくつかの要素を別のファイルに書きたいと思っています。ここで私がやっていることはフィルターでファイルを読むことです。だから私は最善の方法はストリームを使用することだと思うでしょう –