0

オブジェクト参照の問題に関する提案が必要です。このメッセージが表示されました ExceptionMessage: オブジェクト参照がオブジェクトのインスタンスに設定されていません。(一部のnullオブジェクトのため)エラーが発生したときにスタックトレースを出力しています:

 Exception systemException = lastError.GetBaseException();

ex.Message を使用すると、例外が発生したメソッドを取得できますが、例外が発生した (そのメソッドの) 行に関する情報を取得できません。オブジェクト参照が発生した行と、この例外が発生したときに null だったオブジェクトを知る必要があります。

4

3 に答える 3

4

実際のスタックトレースが必要です。

systemException.StackTrace

行番号が必要な場合は、次のようにする必要があります。

StackTrace st = new StackTrace(systemException, true);
StackFrame[] frames = st.GetFrames();

foreach(StackFrame frame in frames)
    frame.GetFileLineNumber();
于 2012-07-09T16:05:13.107 に答える
0

多分これは役立ちます

class Program
    {
        static void Main(string[] args)
        {
            try
            {
                string a = null;
                a.ToString();
            }
            catch (Exception ex)
            {
                var s = ex.StackTrace;
                Console.WriteLine(ex.Source);
                int st = s.LastIndexOf("line");
                Console.WriteLine(s.Substring(st, s.Length - st));
            }
        }
    }

編集済み:

そして、はい、EkoostikMartinによって投稿された回答でStrackTraceを使用して、私はちょうど学びました。私はそれがより良い答えだと思います。

于 2012-07-09T16:21:22.290 に答える
0

その行番号は、スタックトレースに含まれることがほぼ保証されています。ドリルダウンする場合は、発生する可能性のあるコードの大きなブロックにtry-catchを配置し、catchブロックにブレークポイントをドロップします。これにより、VisualStudio内のInnerExceptionsをドロップダウンできます(if存在します)。

于 2012-07-09T16:05:56.637 に答える