我有一个复杂的程序,它遍历一堆输入文件进行大量解析和计算,然后输出其他几个文件。
void ParseFiles(string[] files, ProcessingDescription description) {
foreach(string file in files) {
try {
DoComplicatedProcessing(file, description);
}
catch(Exception e) {
LogFailure(file, e);
}
}
DisplayResult();
}
我在这种情况下捕获的原因System.Exception
是,这可能由于多种原因而失败,解析/计算中的错误,输入文件中的非法值,权限问题甚至内存不足错误,如果我假设所有必要的数据都适合记忆中的结果是错误的。
但最后我不在乎它为什么失败。如果程序针对特定文件失败,我希望它记录该失败并继续下一个文件。
在会话结束时,用户可能会回来查看哪些文件失败以及抛出了哪些错误消息,当然在许多情况下错误消息可能对用户没有帮助,但它比程序在第一个坏文件上崩溃要好。
我一直听到“永远不会捕获 System.Exception”,但我真的看不出有任何其他方法可以做到这一点。