0
A
回答
1
其實你確實想要採用非常防禦性的編碼風格。它可以幫你解決諸如此類的問題。是的,它可能會感到無聊等,但另一方面,空值可以隨時發生。如果你不檢查它們,那麼你的應用程序將會繼續崩潰。
編寫單元測試時使用相同的策略是很好的。您應該測試邊緣案例,在這些邊緣案例中,會有那些您通過空值或空字符串並確保您的代碼可以處理的案例。
相關問題
- 1. 檢查哪個變量拋出異常
- 2. 空引用有時會拋出異常
- 3. 有沒有辦法讓Runnable的run()拋出異常?
- 4. 有沒有辦法找出引發異常的行?
- 5. 如何確定給定方法可拋出哪些異常?
- 6. 應引用一個空變量異常
- 7. Socket.Accept拋出空引用異常
- 8. ActionScript - 有沒有辦法告訴開發者這種方法會拋出異常?
- 9. C#明確定義拋出的異常
- 10. Mockito方法爲使用的變量拋出空指針異常
- 11. 自定義JacksonJaxbJsonProvider沒有正確拋出異常
- 12. LINQ查詢拋出空引用異常
- 13. Umbraco Document.getProperty(...)。值拋出空引用異常
- 14. OAuth拋出空引用異常
- 15. 有沒有辦法引用導致異常的對象?
- 16. 抽象類:當子類沒有正確實現時應拋出哪個異常?
- 17. 如果.NET方法有選擇,應該拋出哪個異常?
- 18. 有沒有辦法讓我拋出異常而不打印堆棧跟蹤?
- 19. 有沒有辦法確定哪個JS被覆蓋window.console?
- 20. iOS:有沒有辦法確定發件人來自哪個UIControlEvent?
- 21. 有沒有辦法使用Chrome API添加彈出式異常?
- 22. C++異常拋出值引用
- 23. c3p0 unreturnedConnectionTimeout沒有拋出異常
- 24. PHPUnit拋出異常,當應該沒有
- 25. Task.WhenAll沒有按預期拋出異常
- 26. Rails Carrierwave White_List沒有拋出異常
- 27. Spring Security沒有拋出任何異常
- 28. 拋出異常,沒有「Exception in thread ...」
- 29. 只返回沒有異常拋出
- 30. DDD驗證沒有拋出異常
沒有哪個特定的變量 - 但堆棧跟蹤應該顯示您涉及哪一行代碼。如果這並沒有太多縮小,請考慮每條語句少做:) –
「我不想手動檢查每行代碼的空值。」然後你會繼續編寫buggy程序。如果一個函數接受一個可以爲null的參數,並且如果傳遞null,程序將會崩潰,那麼你要麼檢查錯誤值,要麼處理異常。如果您調用一個可以返回null的函數,並且您不檢查並在代碼中報告null,那麼您將得到這些異常。 –
如果你不喜歡混亂的代碼使用像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/但首先要說服自己,守衛/防守編程是工作。 –