0

모든 클래스가 관련되어 있으므로 클래스 라이브러리에서 각 정적 메서드에 사용할 적절한 예외를 찾고 있습니다.정적 클래스에 대해 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합니다.

+0

https://msdn.microsoft.com/en-us/library/system.invalidoperationexception(v=vs.110).aspx – MethodMan

+0

@Zach, 땀을 내지 마십시오. InvalidOperationException 괜찮습니다. 두 번째 질문은 너무 광범위합니다. 계약을 사용하고 싶을 수도 있고 제한된 기능을 제공하는 프록시 클래스를 만들 수도 있습니다. –

+0

감사합니다! 그래, 나는 두 번째 질문에 동의한다. 나는 그것이 내가 원하는 것에 달려 있다고 생각한다. – Zach

답변

1

일부 사람들은 나에게 동의하지 않지만 기술적 인면이 없기 때문에 단순히 InvalidOperationException이 잘못된 예외라고 말하는 경우가 있습니다. 이것은 나 에게이 예외의 완벽하게 수용 가능한 사용처럼 보인다.

나는 당신이 InvalidOperationException이 던져해야하는 경우이 조건을 테스트하고 결정하는 도우미 함수를 만들 수도있을 것 같군요하지만 정직하게 모든 것을 보람하지 않는 것, 플러스는 수, 내 의견으로는, 실제로 감소 선명도 코드의 수표는 그다지 많은 코드가 아니며, 코드를 읽는다면 다른 방법을 찾아 내야하는 것보다는 수표가 무엇인지 파악하는 것을 선호합니다.

+0

도움을 주셔서 감사합니다! 예, 모든 메소드 앞에 if 문을 사용하는 것이 합리적이라고 생각합니다. 코드가 여러 곳에서 사용되는 경우 헬퍼 함수를 ​​만들어야한다는 생각이 항상 있었지만 항상 그런 것은 아니라고 생각합니다. – Zach

+0

실제로 헬퍼 함수에 넣으려면 코드의 여러 줄을 저장하지 않습니다 및 전화를 절대적인 전제 조건을 명확하게 만들 것이라고 생각합니다. – EJoshuaS

관련 문제