2017-08-17 90 views
1

我想知道在我的.NET方法可以基于提供的参数和当前对象状态抛出两个或多个异常中的一个的情况下遵循什么最佳实践。哪个异常应该优先,我如何确定?如果.NET方法有选择,应该抛出哪个异常?

对于一般情况下的答案会是最好的,但这里有一个例子来说明我的问题:

假设我有一个接受一个对象参数的方法。此参数不能为空,因为它具有需要为方法执行工作而调用的属性或方法。在这种情况下可能引发ArgumentNullException

另外假设我的方法是在一个类上,它的实例首先需要处于特定的状态才能使该调用有效。如果他们不是,那么InvalidOperationException可能会在这里抛出。

现在考虑在类实例也处于无效状态时使用null参数调用方法的情况。我应该抛出哪个例外,ArgumentNullExceptionInvalidOperationException?为什么?

回答

1

InvalidOperationException是我选择的第一个例外情况,用于检查所描述的例子。该示例的处理顺序首先要求对象在适合调用该方法之前处于特定状态。如果它不处于适当的状态,那么方法输入的验证就无关紧要了。因此,抛出ArugmentNullException将掩盖这个例子的真正问题。

相关问题