我正在编写一个应用程序,可以通过多个步骤提供任务。我有一些类似于下面的代码,我想知道这是否是处理异常的正常方法。这个代码可能永远不会被其他人看到,但它可能是,所以我想知道我正在处理任何人都会遇到的异常。何时处理异常?
IEnumerable<Task> Tasks;
foreach(var task in Tasks)
{
try
{
//boiler plate prep for task (loading libraries, connecting, logging start, etc)
foreach(var step in task.Steps)
{
try
{
step.Execute();
}
catch(Exception ex)
{
LogStepError(step, ex);
throw;
}
}
//Notify parties task has been completed successfully, log task completion
}
catch(Exception ex)
{
LogTaskFailure(task);
}
finally
{
//close connections, etc
}
}
interface ITaskStep
{
void Execute()
{
}
}
我也想补充的是,任务步骤正在实施ITaskStep接口,所以执行的执行是不是我自己的(当然这是在这种情况下,但有人可以实现的接口)。我的代码只是加载库并运行任何ITasks和ITaskSteps。
锅炉准备是一些其他的东西发生在我想包装在try/catch循环之外。它正在拉取一些库依赖关系,并将它们写入磁盘供将来使用以及连接到远程系统等。 – scottm 2009-07-23 16:56:17
使用此代码,如果锅炉板代码引发异常,则不会执行更多任务,这不是我想要的。 – scottm 2009-07-23 17:00:48