首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“抛出新的NotImplementedException();”到底是做什么的?

“抛出新的NotImplementedException();”到底是做什么的?
EN

Stack Overflow用户
提问于 2012-04-17 22:34:00
回答 5查看 36.6K关注 0票数 2

我有一个从类'a‘继承的类'b’。在类'a‘中,有一些代码可以在事件不为空时执行操作。我需要在应用程序中的特定时间在类'b‘中触发该代码。所以在'b‘中,我订阅了一个新的处理程序(事件)。

如果我在类'b‘中的throw new NotImplementedException();行中保留自动生成的事件’原样‘,代码就会按预期工作/运行。一旦我删除thow异常,应用程序就不再按预期工作。

那么,除了抛出异常之外,throw new NotImplementedException还做了什么呢?

我意识到在这一点上我可能试图以错误的方式解决我的编码问题,我相信我会找到更好的方法(我仍在学习),但我的问题仍然存在。为什么这一行会改变代码的结果呢?

编辑:我意识到我的代码不是很具体。不幸的是,由于严格的政策,我不能。我在类中有一个if语句。

代码语言:javascript
运行
复制
if (someEvent != null)

当代码“工作”时,if语句返回true。当它没有像预期的那样工作时,它会返回'false‘。在类'b‘中,应用程序’工作‘(或if语句返回true)的唯一时刻是当我在类’b‘的event方法中有throw new NotImplementedException();行时,该方法是在我附加新事件时自动生成的。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-04-17 22:35:04

这只是一个异常,至于为什么它意味着你的应用程序“工作”完全依赖于处理任何异常的代码。

它不是一个“特殊的”异常,而不是一个正常的异常(除了像其他异常一样从Exception派生)。您倾向于将它与代码生成一起视为实现它所抛出的成员的占位符。这比让代码生成为了输出编译代码而试图理解成员结构要容易得多。

当你说“不再像预期的那样工作”时,我假设它可以编译。如果删除它会阻止代码编译,那么很有可能会出现关于返回值的编译错误。

可能触发事件的代码期望来自处理程序的特定响应,或者如果没有处理程序或发生异常,它将默认响应并继续。在你的例子中,有一个处理程序,没有异常,所以它希望得到更好的响应?

完成猜测。

如果您需要在b中使用a中的代码,请考虑将包含代码的方法设置为protected,如果您需要对行为执行override操作,则可以选择使用virtual

票数 2
EN

Stack Overflow用户

发布于 2012-04-17 22:37:22

想想看:如果你想用下面的方法把两个整数相加……

代码语言:javascript
运行
复制
private int Add(int x, int y)
{

}

...and内部没有这样做的代码(该方法甚至不返回整数)。这就是NotImplementedException的用途。

票数 6
EN

Stack Overflow用户

发布于 2017-07-04 06:20:53

NotImplementedException只是一个异常,当您想要做的事情的代码还没有编写好时,就会使用它。它通常在代码片段中用作占位符,直到您用实际代码填充生成的任何内容的正文。

使用NotImplementedException而不是空代码块是一种很好的实践,因为它会非常明显地抛出一个错误,警告您代码的一部分还没有完成。如果它是空的,那么方法可能会运行,并且不会发生任何事情,这有时是一种痛苦的调试。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10193284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档