Exception
子类?#1 楼
java.lang.UnsupportedOperationException抛出该异常以指示请求的操作不受支持。
评论
@JarrodRoberson好的,在那种情况下,该语句实际上应该从类文档中删除。似乎其他软件包确实使用了该异常。我想如果Oracle这样做了,那我们也应该这样做。我将提交错误报告。
–马滕·博德威斯(Maarten Bodewes)
16年7月7日在18:14
请注意,这是未经检查的RuntimeException。在编译期间,您将不会获得任何反馈或帮助来处理这些异常。如果此方法用于存根方法或正在进行的工作,则应使用某种已检查的异常。
– TastyWheat
19年2月8日在18:58
#2 楼
请区分您所命名的两种情况:要表明请求的操作不受支持并且很可能永远不会支持,请抛出
UnsupportedOperationException
。以表明请求的操作尚未实现,请在以下选项中进行选择:
使用apache commons-lang中的
NotImplementedException
,它在commons-lang2中可用,并已重新添加到commons-lang3中。版本3.2。实现自己的
NotImplementedException
。向
UnsupportedOperationException
抛出类似“尚未实现”的消息。评论
我要这样做,因为在我看来这是合理的。异常指示的“还”或“从不”给出了如何应对的想法。
– sschrass
16年2月16日在9:16
在实践中,#s 1或2非常可取。 #3确实捕获了“不支持”和“未实现”之间的语义区别,但是拥有一个单独的类可以使快速搜索更容易,以验证提交之前没有忘记实现任何应做的事情。
– Sean U
17年9月2日在12:53
#3最适合未实现的方法,因为它不需要第三方库或进行其他工作,即使它是commons-lang。
– JoshDM
18年7月18日在22:55
#3 楼
如果您在NetBeans中创建一个新的(尚未实现的)函数,则它将生成带有以下语句的方法主体:throw new java.lang.UnsupportedOperationException("Not supported yet.");
因此,我建议使用UnsupportedOperationException 。
#4 楼
如果您想获得更高的粒度和更好的解密效果,可以使用commons-lang中的NotImplementedException警告:仅在2.6版之前和3.2版之后可用。
评论
当类不实现方法但子类可以实现方法时,是否适合使用?换句话说,要在非抽象类中使用抽象方法。@SergeyOrshanskiy在以下情况下很有用:根据构造对象的方式,需要创建一个实现接口的匿名类以实例化成员变量,但又不想使用它。如果将其设置为null,并且不小心使用了它(或其他人使用了它),则会得到NullPointerExceptions,在这种情况下,它比UnsupportedOperationExceptions不那么明显。只是一个例子。