[英]Is there anything like Java's AtomicStampedReference in C++?
[英]Is there anything like .NET's NotImplementedException in Java?
Java中有没有类似.NET的NotImplementedException
的东西?
Commons Lang有它。 或者你可以抛出UnsupportedOperationException
。
我认为java.lang.UnsupportedOperationException
是您正在寻找的。
你可以自己做(这就是我所做的)——为了不被异常处理所困扰,你只需扩展 RuntimeException,你的类可能看起来像这样:
public class NotImplementedException extends RuntimeException {
private static final long serialVersionUID = 1L;
public NotImplementedException(){}
}
您可以扩展它以接收消息 - 但如果您像我一样使用该方法(也就是说,作为提醒,还有一些事情要实现),那么通常不需要额外的消息。
我敢说,我只使用这种方法,而我在开发系统的过程中,让我更容易不忘记哪些方法仍然没有正确实现:)
如前所述,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
表示(根据收集合同)某些东西永远不会实现。 这就是为什么我们在类名中有“yet”这个词。 此外,IDE 可以轻松列出调用站点。import
行(不过,JDK 9 已修复此问题)。不,不存在,它可能不存在,因为它的有效用途很少。 在使用它之前我会三思而后行。 此外,创建自己确实很容易。
请参阅此讨论,了解为什么它甚至在 .NET 中。
我猜UnsupportedOperationException
接近了,虽然它没有说操作只是没有实现,但甚至不受支持。 这可能意味着没有有效的实现是可能的。 为什么不支持该操作? 它甚至应该在那里吗? 接口隔离或 Liskov 替换问题可能吗?
如果它正在进行中,我会选择ToBeImplementedException
,但我从来没有发现自己定义了一个具体的方法,然后将它搁置了很长时间,以至于它投入生产,并且需要这样的异常。
本着 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 来说足够好,那么对我们来说也足够好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.