我的意思是,在定义中。如果我有一个实现接口的类的方法,并且我想抛出一个异常,如果接口没有throws声明,我怎么能这样做。
由于
答案 0 :(得分:5)
你根本就没有或抛出RuntimeException。
答案 1 :(得分:5)
依赖于实现接口的类的代码如何知道它必须处理新的异常?您有两种选择:
RuntimeException
的异常,该异常不需要在throws
子句中。但是,调用此方法的任何代码都不必捕获此异常,也不知道它可以被抛出。因此使用此选项时要小心。尽可能记录它们,但在将对象传递给现有方法(如库或内置方法)时仍然会遇到问题。答案 2 :(得分:3)
如果您无法触摸界面,那么您唯一的选择是抛出RuntimeException
。您可以直接使用一些标准的RuntimeExceptions:IllegalStateException
,IllegalArgumentException
,UsupportedOperationException
等。
如果符合您的需要,请使用这些标准例外,或者通过扩展班级RuntimeException
来创建您自己的例外。考虑使用javadoc中的@throws
doclet来记录抛出的异常。
答案 3 :(得分:3)
只有当所有可能的实现都强制客户端处理该异常时,接口中的方法才能声明抛出已检查的异常。 想想java.sql.Connection(一个带有抛出SQLException的所有方法的接口)。否则,如果只有一个特定的实现必须处理一些已检查的异常,那么在那里处理它并将其包装在一些RuntimeException中,如果有意义的话,重新抛出或从该状态恢复。