【问题标题】:Which exception should a .NET method throw first if it has a choice?如果可以选择,.NET 方法应该首先抛出哪个异常?
【发布时间】:2017-08-17 13:04:57
【问题描述】:

我想知道在我的 .NET 方法可能会根据提供的参数和当前对象状态抛出两个或多个异常之一的情况下,应该遵循哪些最佳实践。哪个异常应该优先,我该如何确定?

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

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

还假设我的方法在一个类上,它的实例首先需要处于特定状态才能使调用有效。如果不是,则可以在此处抛出InvalidOperationException

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

【问题讨论】:

    标签: .net exception


    【解决方案1】:

    InvalidOperationException 是我为所述示例检查的第一个异常的选择。本例的处理顺序首先要求对象处于某种状态,才适合调用该方法。如果它没有处于正确的状态,那么方法输入的验证是无关紧要的。所以,抛出一个ArugmentNullException 会掩盖这个例子的真正问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-11
      • 1970-01-01
      • 2014-01-17
      • 2010-11-22
      • 1970-01-01
      • 1970-01-01
      • 2010-11-02
      • 1970-01-01
      相关资源
      最近更新 更多