InvalidOperationException可以用于静态类吗?

本文关键字:静态类 用于 InvalidOperationException | 更新日期: 2023-09-27 18:02:40

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

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。驱动程序未初始化,该方法无效。因此,如果在调用该方法时它为空,我想抛出一个异常。我找到的最接近我正在寻找的是InvalidOperationException。然而MSDN表示,这是一个"当方法调用对对象的当前状态无效时抛出的异常"。因为它是一个静态类,因此没有对象,这是一个不合适的异常类型吗?如果不是,那么应该抛出哪个异常?

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

InvalidOperationException可以用于静态类吗?

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

我认为您可以创建一个辅助函数来测试这种情况,并决定是否应该抛出InvalidOperationException,但实际上它似乎并不值得,而且在我看来,实际上会降低代码的清晰度。检查并不是所有的代码,如果我正在阅读代码,我更愿意看到检查发生了什么,而不是必须深入到另一个方法来找出它。