如何解决C#会覆盖方法并有选择地引发异常,是否需要返回值?
| 我在C#4.0中有一个像这样的方法: protected override bool _update()
{
if (this.Notes == \"\")
throw new Exception(\"Some message...\");
else
base._update();
}
编译器抱怨并不是所有的代码路径都返回一个值,但是,如果我这样做的话:
protected override bool _update()
{
throw new Exception(\"Some message...\");
}
它可以编译。有推荐的解决方法吗?似乎它们确实没有什么不同,如果在一种情况下一个例外足以满足没有返回值的要求,那么在另一种情况下为什么不这样做呢?
解决方法
试一试:)
protected override bool _update()
{
if (this.Notes == \"\")
throw new Exception(\"Some message...\");
else
return base._update();
}
您只需要返回base._update()的输出,仅运行它是不够的,因为不会返回该值。
, 该方法期望返回布尔类型的值,但是您在这里什么都不返回。无论如何,“例外”情况将退出该函数。您需要执行以下操作:
如果(..)
..
其他
{
返回base._update();
}
, 因为如果为this.Notes != \"\"
,则您的方法将退出而不会返回任何值。你是这个意思吗
protected override bool _update()
{
if (this.Notes == \"\")
throw new Exception(\"Some message...\");
else
return base._update();
}
, 这是因为你没有做
\“返回基准。_update\”
也请遵循标准命名约定作为建议:)
包括stmt问题,避免悬空
受保护的重写bool Update()
{
如果(this.Notes == \“ \”)
{
抛出新的Exception(\“ Some message ... \”);
}
其他
{
返回base.Update();
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。