我有一个方法被另一个类调用,该类对对象集合执行多个步骤。具体来说,我将文件列表从其原始位置复制到一个新文件夹。复制文件后,我使用与文件组相关的附加数据更新数据库。它看起来像这样:
public void copyFilesAndStore(File[] files, DataObject additionalData){
for (File f in files){
copyFileToDestination(f);
}
updateDatabase(additionalData);
}
问题是,如果其中一个文件出现问题,则 copyFileToDestination(File f) 方法可能会引发各种 IOExceptions,但即使其中一个文件出现异常,我也想继续复制其余文件文件,并调用更新数据库。所以我可以做这样的事情:
public void copyFilesAndStore(File[] files, DataObject additionalData){
for (File f in files){
try {
copyFileToDestination(f);
} catch (IOException ex) {
log(ex);
}
}
updateDatabase(additionalData);
}
但是,调用 copyFilesAndStore() 的类需要知道复制是否成功,但是如果我在此方法中捕获所有异常,它就不会知道它们。做下面这样的事情是否有意义,还是我错过了更好的解决方案?
public void copyFilesAndStore(File[] files, DataObject additionalData){
IOException encounteredException = null;
for (File f in files){
try {
copyFileToDestination(f);
} catch (IOException ex) {
log(ex);
encounteredException = ex;
}
}
updateDatabase(additionalData);
if (encounteredException != null)
throw(encounteredException);
}