我有一个在构造函数级别具有Id赋值的类。我希望id参数大于0.如果它是0或负数它会导致问题所以如果传递的值不符合标准我想抛出异常:
public class Employee
{
int _id;
string name;
public Employee(int id, string name)
{
if(id<1) throw new Exception("ID must be positive, greater than 0);
_id=id;
this.name = name;
}
}
这是正确的方法吗?
答案 0 :(得分:2)
这不是错误,保护班级的不变量是一件有效的事情。如果你没有这样做,就有可能创建一个你无法想要的无效状态的对象。
我建议您使用更合适的异常类型。投掷ArgumentOutOfRangeException
将更接近您与呼叫者实际通信的内容。
来自the docs:
调用方法时抛出ArgumentOutOfRangeException异常,并且传递给方法的至少一个参数不为null,并且包含的无效值不是参数所需的值集合的成员。