多一点上下文:我有一个监听器类监听网络连接。它的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. 什么时候应该通过一个类作为参数?