多一點上下文:我有一個監聽器類監聽網絡連接。它的listen
方法不應該被調用兩次。什麼時候該扔?當應該只調用一次函數時,應該拋出什麼參數?
2
A
回答
5
如果您要使用預定義的例外,您可能會拋出IllegalStateException
,因爲對象已處於listening
狀態。
但是,如果你這樣做了,應該有一種方法讓客戶端找出是否已經調用了listen
。例如。一種isListening()
方法。
您也可能創建自己的異常,可能從IOException擴展,因爲這是一個IO問題。據推測,嘗試多次收聽失敗,因爲網絡資源已被用於第一次收聽。 (類似於套接字綁定)
2
在這種情況下,我會拋出一個IllegalStateException
。它通常用於指示用戶試圖在對象的當前狀態下做出不合法的事情。
3
由於這是一個邏輯錯誤,只有當您的庫的客戶端使用不當時,您拋出的異常應該是一個未經檢查的異常(例如java.lang.RuntimeException
或其派生物)與檢查的異常相對。
java.lang.IllegalStateException
被用於該目的:
「是一種方法,在非法或不適當的時間調用信號」但是,這也可能是你自己的自定義異常作出異常層次。
相關問題
- 1. 當我調用OnFocusChangeListener.onFocusChange()函數時,應該返回什麼?
- 2. 什麼時候應該拋出異常?
- 3. 當``this`參數在擴展方法中爲null時,應該拋出什麼?
- 4. T應該是一個參數,一個函數還是什麼?
- 5. 活動應該只調用一次
- 6. 函數應該調用嗎?
- 7. 什麼時候使用const函數之前,當你不應該
- 8. 什麼時候應該調用selectize.js函數selectize()?
- 9. 我應該使用什麼mysqli函數?
- 10. 爲什麼Clojure會認爲它應該只有一個參數?
- 11. 什麼函數參數應該用於sdl2.SDL_GetWindowSize?
- 12. 爲什麼在點擊時應該執行一次函數1 + n次?
- 13. 決定什麼方法/函數應該/不應該做
- 14. 什麼參數應該傳遞給.show()?
- 15. 當第二次調用該函數時,子div再次創建
- 16. 當我調用該函數時,它什麼也沒有顯示?
- 17. 應該將什麼參數傳遞給異步函數
- 18. 我應該傳遞這個JavaScript函數的參數是什麼?
- 19. 爲什麼線程函數的參數應該在堆中?
- 20. 什麼時候應該調用SharedPreferencesBackupHelper()/ BackupAgent?
- 21. 什麼時候應該調用setContentAspectRatio?
- 22. 什麼時候應該調用Transaction.delistResource()?
- 23. 什麼時候應該調用javax.jdo.Query.close(Object)?
- 24. 什麼時候應該調用Naming.unbind()?
- 25. 什麼時候應該調用MessageQueue.EndReceive()?
- 26. 什麼時候應該調用realm.close()?
- 27. 什麼時候應該調用super.onResume()?
- 28. 就緒函數指令應該只執行一次
- 29. 隊列中的單個函數被調用多次,但應該調用一次
- 30. 什麼時候應該通過一個類作爲參數?