有没有像.NET';Java中的NotImplementedException?

有没有像.NET';Java中的NotImplementedException?,java,.net,exception,Java,.net,Exception,Java中是否有类似.NET的NotImplementedException的东西?我想这正是您想要的。有。或者您可以抛出一个。您可以自己做(我就是这么做的)-为了不受异常处理的困扰,您只需扩展RuntimeException,您的类可以如下所示: public class NotImplementedException extends RuntimeException { private static final long serialVersionUID = 1L; pu

Java中是否有类似.NET的
NotImplementedException
的东西?

我想这正是您想要的。

有。或者您可以抛出一个。

您可以自己做(我就是这么做的)-为了不受异常处理的困扰,您只需扩展RuntimeException,您的类可以如下所示:

public class NotImplementedException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    public NotImplementedException(){}
}
您可以扩展它以接收消息-但是如果您像我一样使用该方法(即,作为提醒,仍然有一些东西需要实现),那么通常不需要额外的消息


我敢说,在我开发系统的过程中,我只使用了这种方法,这使我更容易了解哪些方法仍然没有正确实现:)

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

请参考关于为什么它甚至出现在.NET中

我猜
UnsupportedOperationException
很接近,虽然它并没有说操作只是没有实现,但甚至不受支持。这可能意味着不可能有有效的实施。为什么不支持该操作?它应该在那里吗? 界面分离或Liskov替代问题


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

如前所述,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);
    }
}
这种方法有以下好处:

  • 当读者看到
    NotYetImplementedException
    时,他们知道一个实现是计划好的,或者已经被遗忘,或者还在进行中,而
    UnsupportedOperationException
    表示(与之一致)一些东西永远不会被实现。这就是为什么我们在类名中有“尚未”这个词。此外,IDE可以很容易地列出调用站点
  • 在每个调用站点都有弃用警告,您的IDE和静态代码分析工具可以提醒您在哪里还需要实现一些东西。(对某些人来说,这种使用贬损的方式可能感觉不正确,但事实上。)
  • 不推荐使用构造函数,而不是类。这样,您只会在需要实现的方法内部得到一个弃用警告,而不是在
    import
    行(尽管是JDK 9)

  • 我说这是完全不同的。NIE还告诉我它可能还没有实现,而UOE告诉我它永远不会实现…@Dykam,那么这不是一个未实现的YetException吗?@Dykam:
    新的不支持运行异常(“尚未实现”)
    -高兴吗?我不是说它更糟,只是有一个不同的用例。新的不支持运行异常(“尚未实现”)这是个很棒的主意!:)在lang3中,由于某些原因,我没有NotImplementedException,因此这是一个很好的解决方案。NotImplementedException似乎已从Commons Lang 3.0中删除。我认为,由于UnsupportedOperationException是集合框架的一部分,因此只有在集合的上下文中使用时才应该使用它。否则,应使用RuntimeException@LeonardButz它来自java.lang:@RaviWallau我看到了:这个类是java集合框架的一个成员。它已经在Commons lang 3.2中阅读过:我最喜欢这个解决方案,因为它很容易有一个特殊的错误处理程序,通过查找对NotImplementedException构造函数的所有引用来搜索它很容易,只需几行代码。但是,必须用自己的文件声明一个新类有点不方便。我同意。在我看来,这比使用
    UnsupportedOperationException
    要好。现在,如果Java能将其添加到公共异常库中就好了!实际上,
    UnsupportedOperationException
    也扩展了
    RuntimeException
    ,并且它支持可选消息。