gpt4 book ai didi

java - 我可以在不切换到显式迭代器的情况下处理 for-each 循环中的异常吗?

转载 作者:行者123 更新时间:2023-12-01 08:48:51 29 4
gpt4 key购买 nike

我正在使用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()

来使用更低级的 api 方式
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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com