2013-07-03 46 views
1

我們需要解析/驗證從CSV或Excel文件讀取的大量行。我們讀取該行並應用業務規則來檢查所有單元格/列是否包含有效數據。處理錯誤並繼續進行的正確方法

應用程序應該保持驗證記錄/列直到結束,即使錯誤或列發生錯誤。目前,我們正在準備這樣的:

​​

列是隻會驗證這樣的:

public void ValidateColumn(ColumnObject c) 
{ 
    try 
    { 
     //validate c 
    } 
    catch(Exception e) 
    { 
     //LOG Column Error 
    } 
} 

我們在兩個地方驗證行(ValidateRow)時處理錯誤,然後爲每列(ValidateColumn)。我的問題是,這是否是有效的或最佳的處理錯誤的方式或者更優化的方法?

+0

驗證錯誤看起來不像*特殊*條件。相反,你似乎希望*某些數據可能無效,這就是爲什麼你有'Validate'方法。因此,首先使用例外似乎是糟糕的設計。 –

+0

你真的*想要處理所有異常嗎?例如,「OutOfMemoryException」,「TypeLoadException」和「AppDomainUnloadedException」如何? –

+0

@CodyGray目標是,即使對「ValidateColumn」或「ValidateRow」的調用失敗,程序也應該繼續下一行。是的,我懷疑這個設計是我在這裏推出的主要原因。 – TheVillageIdiot

回答

0

由於我們不知道您的業務邏輯,因此很難說。但我會建議評估所有可能的例外,並在不同的catch塊中處理它們。這使您能夠更加具體地處理錯誤。一個很好的提示是使用Microsofts StyleCop和FxCop。他們幫助你編寫好的代碼。在這種情況下,他們會告訴你不要捕捉到一般的異常。

0

我認爲你的方式是非常正確和最優的。如果你想繼續前進,你應該總是在foreach中有一個try/catch。但是我猜你在這種情況下並不需要外部try/catch,因爲如果obj或obj.Cells爲null,它將只會失敗。除非你只發布了部分代碼。雖然我同意評論說驗證不應該首先拋出異常,但如果您使用的是一些3d方庫或任何您不確定的複雜代碼,最好按照您的方式處理它。

相關問題