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

w1jd8yoj  于 2023-10-21  发布在  .NET
关注(0)|答案(6)|浏览(117)

Java中有类似.NET的NotImplementedException吗?

tnkciper

tnkciper3#

你可以自己做(我就是这么做的)--为了不被异常处理所困扰,你只需要扩展RuntimeException。你的类可能看起来像这样:

public class NotImplementedException extends RuntimeException {

    private static final long serialVersionUID = 1L;

    public NotImplementedException(){}
}

您可以扩展它来获取消息--但是如果您像我一样使用该方法(即,提醒您还有一些东西需要实现),那么通常不需要额外的消息。
我敢说,我只使用这种方法,而我在开发系统的过程中,使我更容易不失去跟踪哪些方法仍然没有正确实现:)

30byixjq

30byixjq4#

如前所述,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);
    }
}

这种方法有以下好处:
1.当读者看到NotYetImplementedException时,他们知道一个实现已经计划好了,或者已经忘记了,或者还在进行中,而UnsupportedOperationException说(与收集合同一致)某个东西永远不会实现。这就是为什么我们在类名中有“yet”这个词。此外,IDE可以轻松列出调用站点。
1.通过在每个调用站点上显示弃用警告,IDE和静态代码分析工具可以提醒您仍然需要在何处实现某些内容。(有些人可能会觉得这种弃用是错误的,但实际上是deprecation is not limited to announcing removal
1.不推荐使用的是构造函数,而不是类。通过这种方式,您只会在需要实现的方法内部获得一个弃用警告,而不是在import行(尽管是JDK 9 fixed this)。

enyaitl3

enyaitl35#

不,没有,而且很可能没有,因为它的有效用途很少。我会三思而后行使用它。其实,创造自己也很容易。
请参考this discussion关于为什么它甚至在. NET中。
我猜UnsupportedOperationException接近,虽然它没有说操作只是没有实现,但甚至不支持。这可能意味着没有有效的执行是可能的。为什么操作不受支持?它甚至应该在那里吗?界面隔离或Liskov替代问题可能?
如果是正在进行的工作,我会选择ToBeImplementedException,但我从来没有发现自己定义了一个具体的方法,然后把它放在生产环境中太久,需要这样的异常。

gfttwv5a

gfttwv5a6#

本着Stackoverflow是一个combination of Reddit and Wikipedia的精神,这里有一些额外的信息,这与问题有关,也可以是问题的答案。
当您要求NetBeans IDE创建缺少的实现时,它会使用UnsupportedOperationException

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

如果它对NetBeans来说足够好,那么对我们来说也足够好。

相关问题