我有一个运行长批处理的应用程序,可能会抛出许多异常.如果在批处理中的一个项目期间抛出非关键异常,我只想记录并继续,这样我们可以稍后解决问题,同时让其他批处理项继续.
一些例外,例如OutOfMemoryException,对整个应用程序来说是毁灭性的,这些我想重新抛出,以便它们冒泡到全局异常处理程序,它将记录错误并停止应用程序.
所以我的问题是,是否有一个合理的简短列表,我可以在我的下级异常处理程序中重新抛出,同时抑制(在记录之后)其他所有内容?
谢谢!
编辑:稍微详细说明,这是我的程序的基本结构
foreach(var item in longItemList)
{
try
{
bigDynamicDispatchMethod(item);
}
catch(Exception ex)
{
logException(ex);
}
}Run Code Online (Sandbox Code Playgroud)
可能会抛出大量异常,因为这个循环几乎是我应用程序的顶级.我项目中99%的代码都在调度方法之后.我在较低级别进行合理的异常处理,但是bug仍在继续运行,并且我不想在抛出异常后停止批处理中的其他无关进程.
试图找到可以在我的应用程序中的其他地方抛出哪些异常似乎是一项艰巨的任务,而且似乎更容易获得关键异常的黑名单.
有没有更好的方法来构建我的应用程序来处理这个?我愿意接受建议.