Sie können anscheinend eine Exception erneut auslösen, ohne den Stack-Trace in .NET zu verwerfen.Wiederholt eine Exception mit korrekten Zeilennummern im Stack-Trace
Es scheint jedoch nicht zu funktionieren.
Basisnutzung Ich bin folgende ist also:
[WebMethod]
public void ExceptionTest()
{
try
{
throw new Exception("An Error Happened");
}
catch (Exception ex)
{
evlWebServiceLog.WriteEntry(ex.ToString(), EventLogEntryType.Error);
throw;
}
}
Problem ist, die Zeilennummer in der Ausnahme in der Linie der throw;
Linie, nicht die ursprüngliche throw new
Linie.
Ich habe es in einem einfachen EXE-Projekt und ohne die Protokollierung in der Windows-Protokollzeile getestet. Es macht keinen Unterschied, der Stack-Trace hat immer die falsche Zeilennummer, was ihn weniger nützlich macht.
Warum macht es das? Wie mache ich das richtig?
Das verliert nicht die Stack-Trace. Was lässt dich denken, dass es so ist? Protokollieren Sie nicht oder zeigen Sie 'ex.ToString()' an? –
Ist die Zeilennummer im 'CallStack' der'InnerException' korrekt? –
Bist du sicher, dass du "throw" und nicht "throw ex" benutzt? Siehe auch http://StackOverflow.com/q/730250/11683 zur Inspiration. – GSerg