顯然,您可以在不丟棄.NET中的堆棧跟蹤的情況下重新拋出異常。用堆棧跟蹤中的正確行號重新生成異常
然而,它似乎並不奏效。
我下面的基本用法是這樣的:
[WebMethod]
public void ExceptionTest()
{
try
{
throw new Exception("An Error Happened");
}
catch (Exception ex)
{
evlWebServiceLog.WriteEntry(ex.ToString(), EventLogEntryType.Error);
throw;
}
}
問題是,在throw;
線,而不是原來throw new
線路的線路異常的行號。
我已經在一個簡單的exe項目中進行了測試,沒有記錄到windows日誌行。它沒有什麼區別,堆棧跟蹤中總是有錯誤的行號,使其不夠用。
它爲什麼這樣做? 我如何正確使用?
這不會丟失堆棧跟蹤。是什麼讓你覺得它呢?你沒有記錄或顯示'ex.ToString()'? –
'InnerException'的'CallStack'中的行號是否正確? –
你確定你正在使用'throw'而不是'throw ex'嗎?另請參閱http://stackoverflow.com/q/730250/11683獲取靈感。 – GSerg