1

プログラマーでもある私の友人は、いくつかの本当に奇妙なことに行き詰まっています...次のコードのため、私はそれを本当に説明できません:

try {
   result = chunks.Find (delegate(float[] fa2) {
//                                            Debug.Log("fa2: " + fa2);
//                                            Debug.Log("fa: " + fa);
       return fa2[0] == fa[0] && fa2[1] == fa[1] && fa2[2] == fa[2];
   });
}
catch (Exception e) {
   Debug.LogError("result1: " + e);
}

戻り値

result1: System.NullReferenceException: Object reference not set to an instance of an object
 at March+<BuildLand>c__AnonStorey0.<>m__3 (System.Single[] fa2) [0x00009] in C:\Users\Roy\Documents\March\Assets\Scripts\March.cs:262
 at System.Collections.Generic.List`1[System.Single[]].GetIndex (Int32 startIndex, Int32 count, System.Predicate`1 match) [0x00000] in <filename unknown>:0
 at System.Collections.Generic.List`1[System.Single[]].Find (System.Predicate`1 match) [0x00000] in <filename unknown>:0
 at March.BuildLand () [0x0012c] in C:\Users\Roy\Documents\March\Assets\Scripts\March.cs:257

ただし、デバッグ行のコメントを外すと、機能します。誰でもこれを明確にできますか?ご協力いただきありがとうございます!

4

1 に答える 1

3

try-catchステートメントを使用して、エラーを無視して実行を続けるようにプログラムに指示することにより、コードがnull参照例外を取得しているようです。

ステートメントはエラーをキャッチし、catch適切と思われる方法でエラーを処理できるようにします。あなたの場合、エラー処理はエラーをログに書き込むだけです。

Debug ステートメントをコメントアウトすると、エラーをまったく処理しなくなります。エラーが発生した場合、そのコードブロックを本質的に完全に無視します。コードのブロックに依存関係がない場合でも、プログラムが適切に実行されているように「見える」場合があります。

nullただし、参照例外を追跡して解決するか、意図しない結果の怒りに直面する必要があります。

于 2013-11-09T17:57:38.040 に答える