私の目的に合ったこの拡張メソッドがあります。
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()
。上記の回答を参照してください。