我正在編寫一個應用程序,可以通過多個步驟提供任務。我有一些類似於下面的代碼,我想知道這是否是處理異常的正常方法。這個代碼可能永遠不會被其他人看到,但它可能是,所以我想知道我正在處理任何人都會遇到的異常。何時處理異常?
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