RTFM에 따르면 나는 던지기 위해 Exception
을 직접 사용하지 않아야합니다. 코드 인수 분해 다시 언제 작업 중에 오류가 발생하면 어떤 표준 예외가 발생합니까?
InvalidOperationException
메서드 호출이 불충분 함 (잘못된 전제 조건, 시간, 상태 등) 인 경우에의 대부분을 변경;TimeoutExeption
타임 아웃이있을 때마다;ArgumentException
(관련 -ArgumentNullException
및ArgumentOutOfRangeException
) 메소드가 잘못된 매개 변수로 호출 될 때;
그러나, 나는 예외가 무엇인지 알아 내려고 붙어 가장 적합한 방법은 작업의 절반을했을 때 (그래서 매개 변수 및 상태를 확인했다) 내 경우는 외부 장치와의 통신입니다 (하지만 문제가 발생, 갑자기 "omg error"라고보고 할 때).
나는 예외를 마무리 가운데 진행 또는 의 경우 (내가 내 자신을 도출하고 싶지 않은) 표준 어떤 예외 를 사용해야합니까? 어려운 질문 일 필요는 없지만 ...
하지 모든 경우는 .NET Framework의 기존의 예외 적용된다. 중간 진행은 실제로 예외를 만드는 것처럼 보이지는 않지만 문제에 대한 설명을 주면 System.Exception에서 파생 된 DeviceCommunicationException을 생성하지 않는 이유는 무엇입니까? 그게 당신이 경험하는 실제 문제를 완전히 설명하고 설명하는 것처럼 보입니다. – JamieSee
@JamieSee, 한번 해보면 어디서나 그 일을 멈출 수 없습니다 (DeviceCommunication ... 예외가 더 많이 나타날 것입니다);) 그래서 더 이상 * default *가 없습니까? 'InvalidOperationException'은 실제로 적합합니다 (장치가 * 100 % 작동하지 않는 * 이유는 * bad * 호출입니다). :) – Sinatr
그것은 항상 그런 종류의 일로 판단력이 있습니다. Microsoft는 http://msdn.microsoft.com/en-us/library/ms229014.aspx에서 예외 디자인에 대한 약간의 지침을 제공합니다. 내 생각에 예외는 특정 프로세스의 단계가 아닌 실제 문제를 설명해야한다는 것입니다. 또한 예외를 던질 수있는 문제를 줄일 수 있는지 여부를 조사하려고합니다. 잠시 동안 장치를 폴링하여 작동 상태에 도달했는지 확인한 다음 그렇지 않으면 TimeoutException을 발생시키는 것이 적절합니까? – JamieSee