有沒有辦法在運行時改變代碼合同的行爲方式?如在運行期間前或後續conidtion失敗時,應用程序崩潰。有沒有一種方法,而不是崩潰,有一個MessageBox顯示?代碼合同錯誤
代碼合同錯誤
回答
當合同失敗時,程序不會「崩潰」,而是拋出異常。 Contracts類可以讓你控制什麼樣的異常。
因此,您需要某種形式的異常處理,而不僅僅是合同。
話雖如此,失敗的合同通常足夠嚴重到終止申請。
+1表示「失敗的合同通常嚴重到足以終止申請」。 @happyguy:如果您在驗證的每一處使用合約,您可能會錯誤地使用它。你應該確保你在將他們的價值傳遞給一個會根據合同拒絕他們的課程之前預先驗證你的價值。違反合同是例外情況,例外情況應該用於例外行爲。一個例子就是如何在打開文件之前(而且應該)檢查'File.Exists',以避免'FileNotFoundException'。 –
@ MerlynMorgan-Graham - 你說得很好,但你的榜樣不是最好的。文件的存在(通常)不適用於方法合約,因爲文件的存在取決於程序控制之外的事情。也就是說,可以在File.Exists被調用的時間和嘗試打開文件的時間之間刪除或移動文件。這些東西(Eric Lippert稱之爲「外生例外」)通常最好使用普通的結構化異常處理機制來處理。 –
(續)合同對於狀態已知的事情(如空值參考或按值參數的整數範圍檢查)是最好的,不會隨意更改。 –
- 1. VHDL代碼綜合錯誤
- 2. SMTP錯誤代碼合規
- 3. 代碼合同迭代器中的錯誤?
- 4. 這是代碼合同重寫器中的錯誤嗎?
- 5. 如何在使用代碼合同時記錄錯誤
- 6. 代碼簽名權利錯誤:相同錯誤 - 不同原因
- 7. 混合代碼中的錯誤
- 8. 聚合物CLI - npm錯誤代碼1
- 9. 錯誤當試圖合成verilog代碼
- 10. Twitter與Java代碼整合的錯誤?
- 11. 合併單元的代碼錯誤
- 12. Scrapy + Selenium混合代碼產生錯誤
- 13. 代碼塊中的合成錯誤
- 14. 何時適合使用錯誤代碼?
- 15. 代碼錯誤代碼@CollectionId
- 16. 代碼合同+代碼分析
- 17. 代碼合同與代碼分析器
- 18. 錯誤代碼
- 19. 代碼錯誤
- 20. 錯誤代碼
- 21. 錯誤代碼
- 22. 錯誤代碼
- 23. 錯誤代碼
- 24. 錯誤代碼
- 25. 響應代碼202,不是合格的錯誤代碼
- 26. 澤勒的同餘代碼錯誤
- 27. GetHostAddresses不同的錯誤代碼
- 28. 錯誤,同時構建Android源代碼
- 29. 錯誤,同時訪問的隸代碼
- 30. 錯誤處理範例:混合異常和錯誤代碼
這篇文章有些含糊;我看到你已經提到了C#作爲參考語言,你能否給我們一個代碼示例,以及實際操作與期望的操作?謝謝。 – Blaskovicz