
例外が発生した場所を取得するにはどうしたらいいですか?



ExceptionクラスのStackTraceプロパティを使って例外が発生した場所を取得することができますよ。
StackTraceで例外が発生した場所を取得する
ExceptionクラスのStackTraceプロパティを使って例外が発生した場所を取得することができます。
Exception.StackTrace
StackTraceプロパティは、例外がスローされた場所を示すスタック トレースを表す文字列を取得するために使用されます。
スタック トレースは、現在実行中のプログラムのコール スタックを示す情報です。そのため、例外がスローされた場所を特定する際には、StackTraceプロパティを使用することで、例外がスローされたメソッドやクラスなどの情報を取得することができます。
class ExampleClass
{
public static void ExampleMethod()
{
try
{
// 例外を発生させる可能性のあるコード
}
catch (Exception ex)
{
string stackTrace = ex.StackTrace;
Console.WriteLine(stackTrace);
}
}
}
Public Class ExampleClass
Public Shared Sub ExampleMethod()
Try
' 例外を発生させる可能性のあるコード
Catch ex As Exception
Dim stackTrace As String = ex.StackTrace
Console.WriteLine(stackTrace)
End Try
End Sub
End Class
出力結果
at ExampleClass.ExampleMethod() in [ファイル名]:line [行番号]
上記の出力結果から、例外が発生した場所が「ExampleClass.ExampleMethod」であることがわかります。
直前に呼び出されたメソッドやクラスの情報を取得する
StackTraceプロパティを使用することで、例外がスローされた場所以外の情報も取得することができます。
例えば、以下のようなコードでは、例外が発生した場所が「ExampleClass.ExampleMethod」であることだけでなく、例外が発生した直前に呼び出されたメソッドやクラスなどの情報も取得することができます。
class ExampleClass
{
public static void ExampleMethod()
{
try
{
// 例外を発生させる可能性のあるコード
}
catch (Exception ex)
{
string stackTrace = ex.StackTrace;
Console.WriteLine(stackTrace);
}
}
public static void AnotherMethod()
{
ExampleMethod();
}
}
Public Class ExampleClass
Public Shared Sub ExampleMethod()
Try
' 例外を発生させる可能性のあるコード
Catch ex As Exception
Dim stackTrace As String = ex.StackTrace
Console.WriteLine(stackTrace)
End Try
End Sub
Public Shared Sub AnotherMethod()
ExampleMethod()
End Sub
End Class
出力結果:
at ExampleClass.ExampleMethod() in [ファイル名]:line [行番号]
at ExampleClass.AnotherMethod() in [ファイル名]:line [行番号]
上記の出力結果から、例外が発生した場所が「ExampleClass.ExampleMethod」であることだけでなく、「ExampleClass.AnotherMethod」であることもわかります。