2016-06-08 73 views
0

希望我的日誌能夠指出哪個變量引發了空引用異常。C# - 有沒有辦法確定哪個變量拋出空引用異常?

我不想手動檢查每行代碼的空值。

+10

沒有哪個特定的變量 - 但堆棧跟蹤應該顯示您涉及哪一行代碼。如果這並沒有太多縮小,請考慮每條語句少做:) –

+1

「我不想手動檢查每行代碼的空值。」然後你會繼續編寫buggy程序。如果一個函數接受一個可以爲null的參數,並且如果傳遞null,程序將會崩潰,那麼你要麼檢查錯誤值,要麼處理異常。如果您調用一個可以返回null的函數,並且您不檢查並在代碼中報告null,那麼您將得到這些異常。 –

+0

如果你不喜歡混亂的代碼使用像AOP框架(http://www.postsharp.net/blog/post/Validating-parameters-field-and-properties-in-PostSharp-3)。爲了形式化,你可以選擇代碼合約http://devjourney.com/blog/2014/02/12/code-contracts-part-1-introduction/但首先要說服自己,守衛/防守編程是工作。 –

回答

1

其實你確實想要採用非常防禦性的編碼風格。它可以幫你解決諸如此類的問題。是的,它可能會感到無聊等,但另一方面,空值可以隨時發生。如果你不檢查它們,那麼你的應用程序將會繼續崩潰。

編寫單元測試時使用相同的策略是很好的。您應該測試邊緣案例,在這些邊緣案例中,會有那些您通過空值或空字符串並確保您的代碼可以處理的案例。