不支持/未实现的操作在Java中抛出的标准异常是什么?


308

特别是Exception在这些情况下是否使用标准子类?


当类不实现方法但子类可以实现方法时,是否适合使用?换句话说,在非抽象类中具有抽象方法。
osa

@SergeyOrshanskiy在以下情况下非常有用:根据实例构造对象的方式,需要创建一个实现接口的匿名类以实例化成员变量,但又不想使用它。如果将其设置为,null而您不小心使用了它(或其他人使用了它),则会得到NullPointerExceptionsUnsupportedOperationExceptions在这种情况下不那么明显的信息。只是一个例子。
2014年

Answers:


438

java.lang.UnsupportedOperationException

抛出该异常以指示不支持请求的操作。


4
@JarrodRoberson好的,在那种情况下,该语句实际上应该从类文档中删除。似乎其他软件包确实使用了该异常。我想如果Oracle这样做了,那么我们也应该这样做。我将提交错误报告。
Maarten Bodewes,2016年

1
请注意,这是未经检查的 RuntimeException。在编译期间,您将不会获得任何反馈或帮助来处理这些异常。如果此方法用于存根方法或正在进行的工作,则应使用某种已检查的异常。
DeliciousWheat

221

区分您命名的两种情况:


1
我要这样做,因为在我看来这是合理的。异常指示的“还”或“从不”给出了如何应对的想法。
sschrass '16

3
在实践中,#s 1或2非常可取。#3确实捕获了“不支持”和“未实现”之间的语义区别,但是拥有一个单独的类可以使快速搜索更容易,以验证提交之前没有忘记实现应做的任何事情。
肖恩·U

4
#3最适合未实现的方法,因为它不需要第三方库或进行其他工作,即使它是commons-lang。
JoshDM '18年


14

如果您想要更多的粒度和更好的解密,可以使用commons-lang中的 NotImplementedException

警告:仅在2.6版之前和3.2版之后可用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.