繁体   English   中英

Unity3D 调试神奇地移除 NullReferenceException?

[英]Unity3D debug magically removes NullReferenceException?

我的一个朋友,也是程序员,陷入了一些非常奇怪的事情......我无法真正解释它,因为这段代码:

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

但是如果你取消对调试行的注释,它就可以工作。 任何人都可以澄清这一点吗? 谢谢你的帮助!

看起来您的代码正在获取null引用异常,通过使用try-catch语句告诉您的程序忽略错误并继续运行。

catch语句捕获错误并允许您以任何您认为合适的方式处理错误。 在您的情况下,您的错误处理只是将错误写入日志。

通过注释掉 Debug 语句,您根本没有处理您的错误。 如果发生错误,您基本上会完全忽略该代码块。 有时,如果该代码块没有任何依赖项,该程序可以“看起来”仍然正常运行。

但是,您应该追踪您的null引用异常并解决它,否则将面临意外后果的愤怒。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM