2014-01-27 39 views
1

我正在循環幾個例程,由於任何原因,這些例程可能會拋出異常。我從每次迭代中收集異常並保存在字典中。完成所有迭代後,我想要將收集的異常與迭代信息一起投入。從我過去的經驗來看,我知道異常消息通常是toolong,我想知道是否有一種優雅的方式來拋出這些異常並以很好的方式顯示它們。如何處理異常列表?

static void Main(string[ ] args) { 
    Dictionary<int, Exception> exceptionDict = new Dictionary<int, Exception>(); 
    for(int i = 0; i < 5; i++) { 
    try { 
     if(i == 0) { 
     throw new Exception("test0"); 
     } 
     else if(i == 1) { 
     throw new Exception("test1"); 
     } 
     else { 
     throw new Exception("test"); 
     } 
    } 
    catch(Exception ex) { 
     exceptionDict.Add(i, ex); 
    } 
    } 
    if(exceptionDict.Count > 0) { 

    Exception ex = new AggregateException(exceptionDict.Values.ToList()) ; 
    System.IO.File.WriteAllText(@"..\err.txt", ex.InnerException.StackTrace.ToString()); 
    throw ex; 

    } 
} 
+0

您是否需要知道發生異常的迭代次數? – wdosanjos

+1

'「異常消息通常太長」...「並以很好的方式顯示它們」 - 這兩個語句應該告訴你一些東西。例外情況*確實很長,並且包含很多非常有用的信息。但不一定要將信息顯示給用戶。應用程序應記錄異常數據,但應向用戶顯示簡單且用戶友好的內容。理想情況下,消息不會像例外情況那樣顯示潛在的實現細節(可能會被利用)。 – David

+1

您的問題更多關於投擲部分或顯示部分? –

回答