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 回答