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

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

ExceptionクラスのStackTraceプロパティを使って例外が発生した場所を取得することができますよ。

目次

受講者数No.1!初心者からプロへ導く信頼のスクール

    短期間で習得可能!未経験から実践力を磨く充実のプログラム

    今なら無料相談でAmazonギフトカードがもらえる!

    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をコピーしました!
    目次