Java中是否有类似。net的NotImplementedException ?


当前回答

不,没有,它可能不存在,因为它的有效用途很少。我会在使用它之前三思。而且,创造自己确实很容易。

请参考这篇关于为什么它会出现在。net中的讨论。

我猜UnsupportedOperationException很接近,尽管它没有说操作只是没有实现,而是甚至没有支持。这可能意味着不可能有有效的实现。为什么该操作不受支持?它应该在那里吗? 界面隔离或利斯科夫替换问题?

如果工作正在进行中,我会使用ToBeImplementedException,但我从来没有发现自己定义了一个具体的方法,然后把它放在生产环境中太长时间,因此需要这样的异常。

其他回答

不,没有,它可能不存在,因为它的有效用途很少。我会在使用它之前三思。而且,创造自己确实很容易。

请参考这篇关于为什么它会出现在。net中的讨论。

我猜UnsupportedOperationException很接近,尽管它没有说操作只是没有实现,而是甚至没有支持。这可能意味着不可能有有效的实现。为什么该操作不受支持?它应该在那里吗? 界面隔离或利斯科夫替换问题?

如果工作正在进行中,我会使用ToBeImplementedException,但我从来没有发现自己定义了一个具体的方法,然后把它放在生产环境中太长时间,因此需要这样的异常。

Commons Lang手上有。或者你可以抛出一个UnsupportedOperationException。

我认为java.lang.UnsupportedOperationException就是你要找的。

如前所述,JDK没有紧密匹配。然而,我的团队偶尔也会用到这种例外。我们本可以像其他答案所建议的那样使用UnsupportedOperationException,但我们更喜欢在我们的基库中使用自定义异常类,该类已弃用构造函数:

public class NotYetImplementedException extends RuntimeException
{
    /**
     * @deprecated Deprecated to remind you to implement the corresponding code
     *             before releasing the software.
     */
    @Deprecated
    public NotYetImplementedException()
    {
    }

    /**
     * @deprecated Deprecated to remind you to implement the corresponding code
     *             before releasing the software.
     */
    @Deprecated
    public NotYetImplementedException(String message)
    {
        super(message);
    }
}

这种方法有以下好处:

When readers see NotYetImplementedException, they know that an implementation was planned and was either forgotten or is still in progress, whereas UnsupportedOperationException says (in line with collection contracts) that something will never be implemented. That's why we have the word "yet" in the class name. Also, an IDE can easily list the call sites. With the deprecation warning at each call site, your IDE and static code analysis tool can remind you where you still have to implement something. (This use of deprecation may feel wrong to some, but in fact deprecation is not limited to announcing removal.) The constructors are deprecated, not the class. This way, you only get a deprecation warning inside the method that needs implementing, not at the import line (JDK 9 fixed this, though).

本着Stackoverflow是Reddit和Wikipedia的结合的精神,这里有一些与问题相关的附加信息,也可以是问题的答案。

当你要求NetBeans IDE创建一个缺失的实现时,它会使用UnsupportedOperationException:

void setPropertiesWithReader(IDataReader rdr)
{
   throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody
}

如果它对NetBeans足够好,对我们也足够好。