2014-11-10 2 views
1

RTFM에 따르면 나는 던지기 위해 Exception을 직접 사용하지 않아야합니다. 코드 인수 분해 다시 언제 작업 중에 오류가 발생하면 어떤 표준 예외가 발생합니까?

  • InvalidOperationException 메서드 호출이 불충분 함 (잘못된 전제 조건, 시간, 상태 등) 인 경우

    에의 대부분을 변경;
  • TimeoutExeption 타임 아웃이있을 때마다;
  • ArgumentException (관련 - ArgumentNullExceptionArgumentOutOfRangeException) 메소드가 잘못된 매개 변수로 호출 될 때;

그러나, 나는 예외가 무엇인지 알아 내려고 붙어 가장 적합한 방법은 작업의 절반을했을 때 (그래서 매개 변수 및 상태를 확인했다) 내 경우는 외부 장치와의 통신입니다 (하지만 문제가 발생, 갑자기 "omg error"라고보고 할 때).

나는 예외를 마무리 가운데 진행 또는 의 경우 (내가 내 자신을 도출하고 싶지 않은) 표준 어떤 예외 를 사용해야합니까? 어려운 질문 일 필요는 없지만 ...

+3

하지 모든 경우는 .NET Framework의 기존의 예외 적용된다. 중간 진행은 실제로 예외를 만드는 것처럼 보이지는 않지만 문제에 대한 설명을 주면 System.Exception에서 파생 된 DeviceCommunicationException을 생성하지 않는 이유는 무엇입니까? 그게 당신이 경험하는 실제 문제를 완전히 설명하고 설명하는 것처럼 보입니다. – JamieSee

+0

@JamieSee, 한번 해보면 어디서나 그 일을 멈출 수 없습니다 (DeviceCommunication ... 예외가 더 많이 나타날 것입니다);) 그래서 더 이상 * default *가 없습니까? 'InvalidOperationException'은 실제로 적합합니다 (장치가 * 100 % 작동하지 않는 * 이유는 * bad * 호출입니다). :) – Sinatr

+0

그것은 항상 그런 종류의 일로 판단력이 있습니다. Microsoft는 http://msdn.microsoft.com/en-us/library/ms229014.aspx에서 예외 디자인에 대한 약간의 지침을 제공합니다. 내 생각에 예외는 특정 프로세스의 단계가 아닌 실제 문제를 설명해야한다는 것입니다. 또한 예외를 던질 수있는 문제를 줄일 수 있는지 여부를 조사하려고합니다. 잠시 동안 장치를 폴링하여 작동 상태에 도달했는지 확인한 다음 그렇지 않으면 TimeoutException을 발생시키는 것이 적절합니까? – JamieSee

답변

-1

상황에 따라 다릅니다. 웹 서비스 (또는 아마도 웹 사이트)라면 500 내부 서버 오류가 발생할 수 있습니다. 어떤 상황에서 내 C#의 WCF 서비스에서

나는 다음을 수행하십시오

throw new System.ServiceModel.Web.WebFaultException<string>(
       "Descriptive error message", 
       System.Net.HttpStatusCode.InternalServerError); 
+0

downvote에 대한 이유가 무엇입니까? – mattumotu

관련 문제