0
A
回答
3
文字說明非常有用。有幾個原因,我認爲他們應該總是包括在內:
- 它們使您能夠清楚地瞭解異常,而無需在文檔中查找它。
- 他們讓更多的具體信息,以比一個「通用」異常的文件傳遞 - 尤其是關於異常的上下文信息可以包括
- 它們允許你進行國際化的異常消息(非常重要)
- 它們提供了一種方式(如果做得好),根據具體情況向最終用戶提供更有意義的報告。但是,這必須小心謹慎地完成(如果它是人類,您不希望只顯示最終用戶的每個例外情況)。
- 它們提供了一種簡單的方法來添加比僅僅更有意義的異常日誌記錄一類
- 他們提供標準化:異常滿足異常的用戶的期望,因爲框架是基於具有此信息
3
應該記錄一個特殊的異常,但包括文本描述允許您添加更多關於當前異常實例的上下文。
換句話說,ArgumentException
不知道哪個參數有問題,參數在什麼狀態下觸發了異常。
2
是的,Message屬性和消息構造函數參數是必需的。它們不是多餘的。
這是發給另一方的信息,告訴他或她出了什麼問題。例如,拋出FileNotFoundException是不夠的 - 你應該說哪個文件。僅僅說處理Web請求時發生異常是不夠的 - 您應該說出哪個錯誤以及哪個請求。
1
當您想要向用戶顯示異常結果(儘管i18n使這有點棘手)或者當您將異常寫入日誌文件時,有一個文本描述是有用的。請記住,文本描述可以包含更多可能在運行時可用的信息,這在記錄異常時不可用。像參數名稱ArgumentNullException之類的事情馬上就要到了。
1
調試時或排除故障,我想需要做的最後一件事是不必要地閱讀文檔。我認爲有解釋性的文字配合excecptions是非常方便的。如果沒有提供,我認爲圖書館真的錯過了船。
2
異常應包括儘可能多的信息,以便完全診斷問題。這幾乎總是包含對問題的描述,因爲簡單地說,異常的類型不足以追蹤問題。
例如,考慮下列異常是否不包含消息。你仍然可以追蹤問題
- FileNotFoundException異常
- 參數*異常
相關問題
- 1. 上次拋出的異常包含以前拋出的異常?
- 2. 描述每個ZF2路線 - 是否真的需要?
- 3. '拋出新的異常'需要退出()?
- 4. 包含boost :: asio頭文件時拋出運行時異常
- 5. 當類不需要拋出異常
- 6. 實體框架在拋出異常時是否可以包含SQL命令?
- 7. 這行代碼是否真的會拋出IndexOutOfRange異常?
- 8. 是否彈出拋出異常?
- 9. 是在拋出異常時關閉的java掃描程序?
- 10. debuild拋出`擴展-描述 - 是 - empty`
- 11. 異常不需要被拋出,但IOException異常
- 12. 需要檢查NSArray對象是否包含特定的文本。
- 13. pip在安裝包時拋出異常
- 14. spring mvc:檢測加載上下文時是否拋出異常
- 15. 要檢索事件描述,是否需要訪問令牌?
- 16. 只是描述接口描述實現需要做什麼?
- 17. Java - 檢查是否parseInt拋出異常
- 18. 從CoerceValueCallback拋出異常是否合適
- 19. 確定CoreApplicationView.GetCurrentView()是否會拋出異常?
- 20. 迭代DirectoryInfo.EnumerateFiles是否會拋出異常?
- 21. boost :: weak_ptr是否會拋出異常?
- 22. 當使用Log.setUncaughtExceptionHandler拋出異常時需要更多信息
- 23. Java Bouncy Castle在解密時總是拋出異常純文本
- 24. OpenGraph的「描述」字段是否包含HTML?
- 25. 是否有一張表包含sysobjects.xtype描述的列表?
- 26. 魔術異常拋出拋出異常
- 27. 拋出異常拋出異常
- 28. 您是否需要在處理程序拋出異常後重置asio :: io_service?
- 29. 需要Perl -V描述
- 30. 部署ckeditor時,我是否需要包含plugins文件夾?
異常消息是開發商,而不是用戶。 – 2009-08-03 17:47:12