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,但实际上它似乎并不值得,而且在我看来,实际上会降低代码的清晰度。检查并不是所有的代码,如果我正在阅读代码,我更愿意看到检查发生了什么,而不是必须深入到另一个方法来找出它。