C#/VB 例外が発生した場所を取得する方法

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

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」であることがわかります。

リスキリングでキャリアアップしてみませんか?

リスキリング(学び直し)は、経済産業省が推奨しており、

今だけ、最大70%のキャッシュバックを受けることができます。

リスキリング 給付金が出るスクール紹介

最大70%の給付金が出るおすすめのプログラミングスクール!

国策で予算が決められているため申し込みが多い場合は早期に終了する可能性があります!

興味のある方はすぐに確認しましょう。

直前に呼び出されたメソッドやクラスの情報を取得する

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」であることもわかります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次