C# に相当する Java のメソッドはありException.printStackTrace()
ますか、それとも InnerExceptions を介して自分で何かを作成する必要がありますか?
8 に答える
これを試して:
Console.WriteLine(ex.ToString());
http://msdn.microsoft.com/en-us/library/system.exception.tostring.aspxから:
ToString の既定の実装は、現在の例外をスローしたクラスの名前、メッセージ、内部例外で ToString を呼び出した結果、および Environment.StackTrace を呼び出した結果を取得します。これらのメンバーのいずれかが null の場合、その値は返される文字列に含まれません。
上記のコードでは、直接取得して呼び出すToString
オーバーロードがあるため、への呼び出しは必要ありません。System.Object
ToString
追加したい: 例外の外側でスタックを印刷する場合は、次を使用できます。
Console.WriteLine(System.Environment.StackTrace);
ドリューが言うように、例外を文字列に変換するだけでこれが行われます。たとえば、このプログラム:
using System;
class Test
{
static void Main()
{
try
{
ThrowException();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
static void ThrowException()
{
try
{
ThrowException2();
}
catch (Exception e)
{
throw new Exception("Outer", e);
}
}
static void ThrowException2()
{
throw new Exception("Inner");
}
}
次の出力が生成されます。
System.Exception: Outer ---> System.Exception: Inner
at Test.ThrowException2()
at Test.ThrowException()
--- End of inner exception stack trace ---
at Test.ThrowException()
at Test.Main()
http://msdn.microsoft.com/en-us/library/system.exception.stacktrace.aspx
Console.WriteLine(myException.StackTrace);
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
Java の Log4J のように、例外を引数として取り、すべてを処理できる C# Logging API はありませんか?
つまり、Log4NET を使用します。
また、Log4Net を見てください... Log4J の .NET へのポートです。