我实际上正在从事框架开发,这意味着需要非常强大的编码方法。
我面临一个问题,我不知道需要抛出哪个 System.Exception 派生类。基本上情况是,我有一个类,其中的字段可以由构造函数选择性地初始化,并且具有使用这些字段的方法。如果用户没有初始化这些字段,我必须抛出哪个异常? (这意味着它们为空)
这是一个例子:
public class MyConnection
{
private Uri endpointUri;
public Uri EndpointUri
{
get
{
return this.endpointUri;
}
set
{
this.endpointUri = value;
}
}
public MyConnection()
{
}
public MyConnection(Uri endpointUri)
{
this.endpointUri = endpointUri;
}
public FileStream GetFile()
{
if (this.endpointUri != null)
{
// My doer methods
}
else
{
throw new TheExceptionINeedToThrow("endpointUri", ...);
}
}
}
请注意,我已经阅读了全文《框架设计指南》 http://www.amazon.fr/Framework-Design-Guidelines-Conventions-Reuseable/dp/0321545613关于异常处理和抛出的章节,我没有找到任何适合这种情况的解决方案。或者也许我误解了什么......
感谢您的帮助。
编辑:事实上,我提供一个空的构造函数对于我的问题来说似乎有点令人困惑,但它完全是自愿的。在某些必须遵守一系列不同状态且无法在多个对象中复制的对象中,它有时很有用。
Throw InvalidOperationException http://msdn.microsoft.com/en-us/library/system.invalidoperationexception.aspx:
当方法调用对于对象的当前状态无效时引发的异常。
注意空引用isn't被传递到方法中 - 当调用方法时它已经存在 - 因此无效的是对象的当前状态,而不是参数。
但是,如果可能的话,最好从一开始就阻止以这种方式创建对象,是吗?have成为可写属性?你想要一个实例吗did端点 URI 为空?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)