InvalidOperationException 可以用于 static 类 吗?

Can InvalidOperationException be used for static classes?

我正在为我拥有的 class 库中的每个静态方法寻找适当的异常,因为所有方法都是相关的。

public static void EnterText(string element, string value, PropertyType elementType)
    {
        if (PropertiesCollection.Driver == null)
        {
            throw new InvalidOperationException();
        }
        if (elementType == PropertyType.Id)
        {
            PropertiesCollection.Driver.FindElement(By.Id(element)).SendKeys(value);
        }
        else if (elementType == PropertyType.Name)
        {
            PropertiesCollection.Driver.FindElement(By.Name(element)).SendKeys(value);
        }
        else //if elementType does not make sense an argument exception is thrown
        {
            throw new ArgumentException();
        }
    }

问题是如果PropertiesCollection.Driver没有初始化,这个方法就没用了。因此,如果在调用该方法时它为空,我想抛出一个异常。我发现的最接近我正在寻找的东西是 InvalidOperationException。但是 MSDN 说它是 "exception that is thrown when a method call is invalid for the object's current state"。由于它是一个静态的 class,因此没有对象,这是一个不合适的异常类型吗?如果不是,那么应该抛出哪个异常?

此外,在更多的组织方面,检查驱动程序是否为 null 的代码片段应该放在每个方法的顶部,还是太多余了?我能想到的替代方法是在每个方法的开头调用一个辅助方法,该方法检查并在需要时抛出异常。

有些人可能不同意我的看法,但说 InvalidOperationException 是错误的异常仅仅是因为在技术上没有一个实例,这对我来说似乎是吹毛求疵。对我来说,这似乎是对这个例外的完全可接受的使用。

我想你可以创建一个辅助函数来测试这种情况并决定是否应该抛出 InvalidOperationException 但实际上它似乎并不值得,而且在我看来它实际上可以 降低代码的清晰度。检查并没有那么多代码,如果我正在阅读代码,我更愿意只查看正在发生的检查,而不必深入研究另一种方法来弄清楚。