我有这种适合我的目的的扩展方法。
public static class ExceptionExtensions {
public static string ToMessageAndCompleteStacktrace(this Exception exception) {
Exception e = exception;
StringBuilder s = new StringBuilder();
while (e != null) {
s.AppendLine("Exception type: " + e.GetType().FullName);
s.AppendLine("Message : " + e.Message);
s.AppendLine("Stacktrace:");
s.AppendLine(e.StackTrace);
s.AppendLine();
e = e.InnerException;
}
return s.ToString();
}
}
并像这样使用它:
using SomeNameSpaceWhereYouStoreExtensionMethods;
try {
// Some code that throws an exception
}
catch(Exception ex) {
Console.WriteLine(ex.ToMessageAndCompleteStacktrace());
}
更新
由于我收到了对此答案的支持,我想补充一点,我已停止使用此扩展方法,现在我只使用exception.ToString()
. 它提供了更多信息。因此,请停止使用此方法,而只需使用.ToString()
. 请参阅上面的答案。