如果对象的参数未传入有效数据,这是否是中止对象实例化的最佳方法?
protected Command(string commandKey)
{
if(commandKey == null) throw new ArgumentNullException("commandKey", "Command Key cannot be null as it is required internally by Command");
if(commandKey == "") throw new ArgumentException("Command Key cannot be an empty string");
CommandKey = commandKey;
}
答案 0 :(得分:1)
是。通常的做法是验证构造函数中的参数,如果它们无效则抛出异常。
答案 1 :(得分:0)
完全没问题。构造函数不会返回任何内容,所以如果出现问题,您还知道怎么回事?你可以有一个bool将它设置为某种未初始化的状态,但我会选择例外。
另外:
if(String.IsNullOrEmpty(commandKey)) //throw exectpion
答案 2 :(得分:0)
在这种情况下,您可以使用静态方法string.IsNullOrEmpty(commandKey):
protected Command(string commandKey)
{
if(string.IsNullOrEmpty(commandKey))
throw new ArgumentException("commandKey");
//something
}
答案 3 :(得分:0)
如果您查看框架源代码,这正是Microsoft所做的,所以我怀疑它完全有效。
答案 4 :(得分:0)
如果在构造函数内部进行验证并在出现问题时抛出异常,那就完全没了问题。