您显然能够在不丢弃.NET中的堆栈跟踪的情况下重新抛出异常.
但它似乎没有起作用.
因此我遵循的基本用法是:
[WebMethod] public void ExceptionTest() { try { throw new Exception("An Error Happened"); } catch (Exception ex) { evlWebServiceLog.WriteEntry(ex.ToString(),EventLogEntryType.Error); throw; } }
问题是,抛出行中异常中的行号;线,而不是原来扔新线.
我在一个简单的exe项目中测试了它,没有登录到Windows日志行.它没有任何区别,堆栈跟踪总是包含错误的行号,使其不太有用.
它为什么这样做?
我该怎么做?
解决方法
如果将其置于内部异常中,则不会丢失原始异常.
[WebMethod] public void ExceptionTest() { try { throw new Exception("An Error Happened"); } catch (Exception ex) { evlWebServiceLog.WriteEntry(ex.ToString(),EventLogEntryType.Error); throw new Exception("Your message",ex); } }