2012-04-13 5 views
2

私のアプリケーションから何らかの意味がないようなエラーレポートがいくつか出てきました。私はコードの他の部分から呼び出されるいくつかのパブリックな静的メソッドを持つ静的クラスを持っています。これらのメソッドのほとんどは、XMLドキュメント上に要素を作成します。スタティックメソッドでNULLポインタエラーが発生しました

これらのメソッドのほとんどの最初の行は、XMLドキュメントに要素を作成し、そのように、それを返し、この同じクラスのプライベート静的メソッドの呼び出しです:

private static XmlElement BuildCmd(string name) 
{ 
    XmlElement e = OtherClass.NewElement("CMD"); 
    e.SetAttribute("type", name); 
    return e; 
} 

public static uint SendFlightReport(FlightData info, AircraftInfo aInfo) 
{ 
    XmlElement cmd = BuildCmd("pirep"); 
    .... 
    some other stuff 
    .... 
} 

生成されたスタック・ダンプ例外的には、BuildCmdを呼び出す行が違反行として報告されます。これは意味をなさない - 静的メソッドを呼び出すときに、どのようにnullポインタ(C#ではオブジェクト参照がオブジェクトのインスタンスに設定されない)を持つことができますか?

EDITは:

public class OtherClass { 

    private readonly XmlDocument doc = new XmlDocument(); 

    public XmlElement NewElement(string name) { 
     lock (doc) 
     return doc.CreateElement(name); 
    } 
} 
+3

可能な犯人: 'OtherStaticClass'(多分静的コンストラクタ)または' e'( 'OtherStaticClass.NewElement'の戻り値)。あなたはデバッグを試みましたか? –

+1

「他のもの」を表示してください。私は(悲しいことに、大きな頻度で)生産環境のスタックトレースの行番号がしばしば完全に間違っているという事実と相反する必要がありました。 'BuildCmd(" pirep ")'がNREを投げ捨てるとは思わないことは明らかです。そうではありません。ただし、スタックトレースのメソッド名は決して間違っていません。だからもしそれが本当に 'SendFlightReport'を非難しているのであれば、NREは* defintely *起こっています。方法全体を投稿してください。 –

+0

"OtherStaticClass.NewElement ..."の実装を示すことは貴重だと思います。 – grant

答えて

-1

私はあなたがリリースビルドを実行している疑いがある:尋ねた人のために、ここでOtherClass.NewElementにコードです。その場合、コンパイラーの最適化のために行番号が多少オフになることがよくあります。デバッグビルドを実行してみてください。あなたはおそらく、例外が実際に.... some other stuff ....

参照、例えば

https://stackoverflow.com/a/114854/385844

http://social.msdn.microsoft.com/Forums/zh/vsdebug/thread/afb7ae70-3e0c-4ea9-86ab-633fe1f9cf6a(VB.NET、まだ...)

の第一または第二のラインの上に投げされていることがわかります

http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/6af62159-fe6b-4554-8e46-d2b6c06fa253

+1

Downvoter、あなたはコメントしますか? – phoog

+1

私はdownvoteをしませんでしたが、問題のコードがOPの実際のコードから直接来たと仮定しているようです。これは、ここでの質問で見たことに基づいたかなり広い仮定です。 –

+0

そうでしょうか?これまで他のスタックトレースでこれを見たことはありません。 –

関連する問題