簡體   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