我想知道在我的.NET方法可以基于提供的参数和当前对象状态抛出两个或更多异常之一的情况下要遵循的最佳实践。应该优先考虑哪个例外,我该如何确定?
对一般情况的答案是最好的,但这是一个例子来说明我的问题:
假设我有一个接受对象参数的方法。此参数不能为null,因为它具有需要为方法执行其工作而调用的属性或方法。在这种情况下,可能会抛出ArgumentNullException
。
另外假设我的方法在一个类上,其实例首先需要处于特定状态才能使调用有效。如果不是,则可以在此处抛出InvalidOperationException
。
现在考虑使用null参数调用方法的情况,而类实例也处于无效状态。我应该抛出哪个例外ArgumentNullException
或InvalidOperationException
?为什么?
答案 0 :(得分:1)
InvalidOperationException
是我选择的第一个要检查的例子。该示例的处理序列首先要求对象在适合调用该方法之前处于某种状态。如果它没有处于正确的状态,那么方法输入的验证是无关紧要的。因此,抛出ArugmentNullException
会掩盖这个例子的真正问题。