我正在使用htsjdk SamReader类如下:
try(
SamReader reader = SamReaderFactory.makeDefault().open(new File(filename))
){
for(SAMRecord record : reader){ // potential exception here, based on file input
// process record
}
}
catch(SAMFormatException e){
// rest of loop is skipped by handling exception here
}
SamReader 类基本上从文本文件中读取数据,并从文本文件中的每一行生成一个新的 SAMRecord。 SamReader 类对文件中的每一行执行检查,并可能引发运行时 SAMFormatException。我可以处理这个异常,但我还没有找到一种方法来使用 for-each 循环处理它,同时仍然尝试处理文件的其余部分。
有没有办法在使用 for-each 循环格式时处理运行时异常并继续处理文件的其余部分?或者我是否需要显式使用迭代器来控制它?
最佳答案
将 try catch 放入循环内
SamReader reader = SamReaderFactory.makeDefault().open(new File(filename));
for(SAMRecord record : reader){
try {
// process record
} catch(SAMFormatException e) {
// handle exception
}
}
或者 - 正如您所解释的,迭代时抛出异常 - 您使用 iterator()
Iterator<SAMRecord> it = reader.iterator()
while(it.hasNext()) {
try {
SAMRecord record = it.next();
// process record
} catch(SAMFormatException e) {
// do handling here
}
}
关于java - 我可以在不切换到显式迭代器的情况下处理 for-each 循环中的异常吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42517096/