모든 클래스가 관련되어 있으므로 클래스 라이브러리에서 각 정적 메서드에 사용할 적절한 예외를 찾고 있습니다.정적 클래스에 대해 InvalidOperationException을 사용할 수 있습니까?
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가 초기화되지 않은 경우 메서드가 쓸모가 없다는 것입니다. 따라서 메서드가 호출 될 때 null 인 경우 예외를 throw하고 싶습니다. 내가 찾고있는 가장 가까운 것은 InvalidOperationException입니다. 그러나 MSDN은 "메서드 호출이 개체의 현재 상태에 대해 유효하지 않을 때 throw되는 예외"라고 말합니다. 이것은 정적 클래스이며 객체가 없으므로 부적절한 예외 유형입니까? 그렇지 않은 경우, 대신에 어떤 예외를 throw해야합니까?
또한 조직 측면에서 볼 때 드라이버가 null인지 확인하는 코드 스 니펫은 각 메소드의 맨 위에 있거나 과도하게 중복되어 있어야합니까? 내가 생각할 수있는 대안은 각각의 시작 부분에서 호출되는 헬퍼 메소드이며 필요할 경우 예외를 throw합니다.
https://msdn.microsoft.com/en-us/library/system.invalidoperationexception(v=vs.110).aspx – MethodMan
@Zach, 땀을 내지 마십시오. InvalidOperationException 괜찮습니다. 두 번째 질문은 너무 광범위합니다. 계약을 사용하고 싶을 수도 있고 제한된 기능을 제공하는 프록시 클래스를 만들 수도 있습니다. –
감사합니다! 그래, 나는 두 번째 질문에 동의한다. 나는 그것이 내가 원하는 것에 달려 있다고 생각한다. – Zach