서버와의 TCP 소켓 통신을 캡슐화하는 클래스가 있습니다. 서버로 보내지는 각 명령 메시지에 대해 서버는 항상 응답 코드 (OK, Fail)가 포함 된 응답 메시지를 되돌려 보냅니다. 내 클래스를 사용하면 각 명령을 동기화 또는 비동기로 실행할 수 있습니다.예외 vs 소켓 클라이언트 클래스의 결과 코드
기본적으로 두 가지 유형의 예외가 발생할 수 있습니다. 연결이 끊어 지거나 "복구 버퍼가 가득 찼습니다"와 같은 예기치 않은 예외로 인해 발생한 "오류"입니다. 오류가 발생하면 연결이 다시 설정 될 때까지 명령을 계속하거나 다시 시도 할 수 없습니다. 실패 응답 또는 예외 상황이 발생하면 다시 명령을 시도 할 수 있습니다 ...
이제 sync 명령 메서드는 다음 값을 가질 수있는 열거 형을 반환합니다. OK, Fail, Fault. 예외가 발생하면 단순히 호출하는 스레드로 보내집니다 (sync 명령에서). 비동기 명령의 경우 Result 속성 enum 값에 OK, Fail, Fault 또는 Exception이라는 추가 값이 포함될 수 있으며 콜백은 명령 객체의 Exception 속성을 통해 실제 예외 객체에 액세스 할 수 있습니다.
이 전략에 대해 어떻게 생각하십니까? 동기화 명령에 대한 예외를 전혀 발생시키지 않고 내부적으로 예외를 기록하고 대신 네 번째 열거 형 값을 반환하는 유혹을받습니다. 그 이유는 모든 경우에 예외로 처리하기 때문입니다 ... 또는 사용하지 않아야합니다. 결과 코드를 전혀 작성하지 않고 모든 경우에 예외를 발생시킵니다.
감사합니다.
답장을 보내 주셔서 감사합니다. 이 스레드에서 얻은 값은 기본적으로 "예외적 인 조건에 대한 예외 사용"을 상기시키는 것입니다. 그래서 나는 그 첫 번째 사람에게 대답했다. 여러 답을 줄 수 있다면 그렇게 하겠어! –