我有15個工作線程同時運行。代碼在SSIS包內運行,並且必須保持主線程運行,直到所有工作線程成功完成或終止並出現錯誤。如何處理單個catch塊中工作線程和主線程的異常?
爲了趕上從工作線程的例外,我有一個靜態異常
static Exception Main_Exception = null;
這是由工作線程更新。
catch (Exception ex)
{
Main_Exception = ex;
}
檢查Main_Exception的main方法仍然爲null或已經更新。
if (Main_Exception != null)
{... }
對於出現的任何異常,我需要將異常詳細信息插入到錯誤日誌中。我想管理main方法的catch塊中的所有異常。
我設計了以下主要方法。方法是正確的還是錯過了某些東西?在這種情況下,「throw Main_Exception」或「throw」能夠正常工作嗎?
main()
{
try{
if (Main_Exception != null)
{
throw Main_Exception; OR throw;
}
}
catch(Exception ex){
//INSERT exception-details into error-log
}
}
爲什麼他不能在主線程中爲他們'.Wait()'(或等待),這會導致他們在主線程中拋出一個'AggregateException',他可以捕獲或只是繼續執行完成? –
chrisf,謝謝你的回答。根據第二個選項,我是否必須手動創建一個新的Ecpetion,然後將它放入if塊中?我的理解是正確的嗎? if(Main_Exception!= null) { throw new Exception(); } – Abhirup
@BenjaminGruenbaum,如果我的任何工作線程中有任何異常,我需要整個SSIS腳本包以錯誤結束。需要的是,我不能等待其他線程的完成。 – Abhirup