0

I wanted to log the Exception details Filename , FileLineNo, Method Name (where the exception occured) This is working using the StackTrace class But some times i am getting the File Line No and Method Name as null How shall i track Exception Details all the time when an Exception occur

here is my code

Public Shared Sub LogException(ByVal ex As Exception)

Dim trace As Diagnostics.StackTrace = New Diagnostics.StackTrace(ex, True)
LogInfo(String.Format("Error Message :{0}  => Error In :{1}  => Line Number :{2} => Error Method:{3}",
                              ex.Message, trace.GetFrame(0).GetFileName(),
                              trace.GetFrame(0).GetFileLineNumber(),
                              trace.GetFrame(0).GetMethod().Name))
End Sub
4

3 に答える 3

4

したがって、おそらく一度にすべての質問に対する答えは、「キャッチされた例外には、可能な限りすべての詳細が含まれる」ということです。

パブリック共有サブLogExceptionは、その情報のほとんどをすでに持っているExceptionオブジェクトを取得しています。だから、あなたはただすることができます...

LogInfo(ex.ToString())

...そして可能な限り詳細を取得します。

ファイル名や行番号がわからない場合があり、場合によっては、LogInfoステートメント自体が例外をスローします。これは、潜在的なセキュリティリスクを伴いますが、これらの詳細を確実に取得する方法を説明しています。

Exception.ToString()に含まれる例外のタイプとスタックトレース情報は、通常、実際のエラーを特定するのに十分であることがわかりました。そうでない場合は、通常、コードの構造に問題があります。

于 2012-07-26T19:17:36.513 に答える
2

例外には、すでに完全なスタックトレースが含まれています。新しいものを作成する必要はありません。

于 2012-07-26T19:16:36.860 に答える
1

1)を使用して、Exceptionオブジェクト内からスタックトレースを取得できますException.StackTrace。新しいものを作成する必要はありません。

2)デバッグ情報がない場所(フレームワーク内など)から例外がスローされた場合は、取得する行番号またはソースファイル名がない可能性があります

于 2012-07-26T19:17:17.410 に答える