나는 예외 구동 프로그래밍을해서는 안되는 것을 알고있다. 프로그래머가 어떤 점에서 MyDeviceInstance.Connect를 호출하고 현재 내 문제가 나타나는 곳에서 장치와의 연결을 설정해야하는 라이브러리를 구축하고 있습니다. "연결/연결 끊기"방법에 대한 예외 구동 프로그래밍을 피하는 방법
나는 무효 연결() 나의 연결 방법을 썼다, 그래서 (실제로 난 아무것도 필요가 없기 때문에) 나는 아무것도 반환하지 해요,하지만 난 많은 상황에서 예외가 발생합니다 :- 연결이 이미
- 을 존재하는 경우 MyDeviceInstance에서 일부 잘못된 설정이있는 경우 deviceConnect이 실패 내 상호 운용성 방법 (그 뜻이 많은 오류을 나타내는 int를 반환하기 때문에 여기가 가장 큰 문제가되어 있으면)
은 void 대신 boolean을 반환합니까? 예외가 발생할 가능성이 많습니다.
이 질문의 두 번째 부분은 void Update()이라는 또 다른 방법입니다. 이 메서드는 MyDeviceInstance가 이미 연결된 경우에만 작동합니다.
- 연결이
- 연결이 어떤 이유로 손실이없는 (그리고 프로그래머가이 일 것으로 기대하지 않지만 수) :이 경우에 나는 예외를 던질거야
업데이트는 모든 예외를 throw하지 않고 (적어도 "연결이 없습니다"와 같은 일반적인 오류를 제한하기 위해) bool 값을 반환해야합니까? 내가 한 지점에 더 정확하게해야
: 어떤 대답
EDIT 1
덕분에 우리는 내가 내 메서드를 호출합니다 USB 장치에 대해 이야기하고 있기 때문에 업데이트을 업데이트하면 장치에 따라이 방법이 실패 할 수 있습니다 (연결되어있는 경우). 더 중요한 것은 장치를 다시 연결하면 interop 메서드가 다시 연결될 필요가 없으며 (예 : 내부적으로 어떻게 작동하는지 모르겠 음) 다시 작업을 시작합니다 (정상적인 메서드는 동일하게 수행함).
업데이트 방법은 장치를 분리해야합니까? 프로그래밍 방식으로 말하는 것은 예외이지만 사용자가 말하는 것은 아주 정상적인 상황입니다.
두 번째 질문에 대답하려면 네, 단절된 미디어 장치가 확실히 예외적 인 상황입니다. 귀하의 원래 질문은 비즈니스 규칙을 예외로 포함해야하는지 여부이며, 답변은 IMHO가 아닙니다. – Furbeenator
두 번째 질문에 대한 답을 보내 주셔서 감사합니다. 그러나 나는 내 응용 프로그램에서 비즈니스 로직을 던지는 것에 대해 이야기 한 적이 없다고 생각합니다. 내가이 일을하는 곳을 나에게 지적 해 줄 수 있니? (가능하다면) –
나는 당신이 당신이 찾고있는 오류를 설명했을 때 나는 오해했다고 생각한다. 사용자가 데이터를 처리하는 대신 예외를 사용하여 데이터의 유효성을 검사하는 방식으로 읽습니다. 오류 트래핑의 범위가 단순히 연결/연결 끊기 작업을 확인하는 것보다 광범위하다고 생각했습니다. – Furbeenator