我有兩種方法,一種直接調用另一種,這兩種方法都拋出完全相同的2個異常(如果出現錯誤情況,而不是指出我收到異常)。爲此,我應該在每個try塊中使用one語句編寫獨立的try和catch塊,並捕獲這兩個異常(這兩個都可以處理,因爲我檢查了MSDN類庫引用,並且還有一些我可以執行的操作,例如,重新打開SqlConnection或者運行一個查詢,而不是一個不存在的存儲過程)。所以這樣的代碼:如何用2個方法構造代碼,一個接一個地拋出相同的兩個異常?
try
{
obj.Open();
}
catch (SqlException)
{
// Take action here.
}
catch (InvalidOperationException)
{
// Take action here.
}
而且同樣的另一種方法,我直呼後。這似乎是一種非常混亂的編碼方式。另一種方法是使用異常變量進行編碼(因爲我使用AOP來記錄異常詳細信息,因此使用類級屬性,因此這種變量已被忽略)。這樣做可以幫助我找出哪種方法導致異常,然後採取相應措施。這是最好的方法,還是完全有另一種最佳做法?
我還假設,因爲只有這兩個方法被拋出,所以我不需要捕獲異常,因爲這將是我無法處理的異常(導致出我的控制的方式)。
謝謝
答案可能取決於您在第一種方法拋出異常和第二種拋出異常時的處理方式。 – 2010-03-26 21:42:31
也是如此。雖然似乎看到哪種方法調用拋出異常,然後做某種行爲似乎是最好的方法。我有興趣知道在設置壞習慣之前是否有其他方式。 – dotnetdev 2010-03-26 21:50:31