在我寫入數據庫的方法中,我處理錯誤,如下面的代碼所示。在catch (DbUpdateException ex)
我想重新拋出異常並在最後的catch (Exception ex)
中捕獲它。以相同的方法拋出並捕獲異常
這是可能的,以及如何做到這一點?下面的代碼不這樣做。
using (Entities context = new Entities())
{
try
{
context.Office.Add(office);
retVal = context.SaveChanges();
}
catch (DbUpdateException ex)
{
SqlException innerException = ex.GetBaseException() as SqlException;
if (innerException != null && innerException.Number == (int)SQLErrorCode.DUPLICATE_UNIQUE_CONSTRAINT)
{
throw
new Exception("Error ocurred");
}
//This is momenty where exception is thrown.
else
{
throw ex;
}
}
catch (Exception ex)
{
throw
new Exception("Error");
}
}
您在這裏失去了各種有用的信息。堆棧跟蹤不斷重置。 –
[請不要使用流量控制異常](http://stackoverflow.com/questions/729379/why-not-use-exceptions-as-regular-flow-of-control) –
你爲什麼要這樣做?你最後一次捕獲將隱藏所有的異常細節,使其更難調試和維護。如果你不打算處理這個例外,就讓它冒泡吧。 – Oscar