【发布时间】:2013-01-14 21:37:35
【问题描述】:
我有两个这样的课程
class ClassA
{
// Some properties
public String PropertyA { get; set; }
}
class ClassB
{
public List<ClassA> PropertyB { get; private set; }
ClassB()
{
PropertyB = new List<ClassA>();
}
}
然后在其他地方我有这样的方法
public String MyMethod(ClassB argument)
{
//do stuff with all the PropertyA values
}
我希望从参数中 PropertyB 中没有元素具有 null 或空 PropertyA(将生成无效结果),我应该抛出什么样的异常?参数异常?
编辑:所以我将尝试用文字来解释它:我有一个方法,它有一个 ClassB 类型的参数,ClassB 有一个 ClassA 列表,每个 ClassA 都有一个字符串属性。我正在使用此属性构建一个查询,所以我认为最好在使用查询时将其停在此处。
【问题讨论】:
-
为什么在这种情况下需要抛出异常?我会让 .NET 框架抛出异常。
-
您的意思是如果
arguments是一个包含:[someClassAInstance, null, anotherInstance]的数组,您应该抛出什么,因为您不希望将null引用作为元素值之一?编辑:和/或如果说anotherInstance.PropertyA == null也无效,应该抛出异常? -
@Vraiment 根据您的编辑,我建议您在方法文档中记录嵌套要求并执行预验证检查并抛出
ArgumentException(或继承自该的自定义异常),或将检查移至较低级别的调用(可能是BuildQuery,最终可能将PropertyA字符串作为输入参数,这将引发ArgumentNullException),这意味着您将开始构建查询并引发异常部分- 穿越。