2011-03-07 3 views
0

Socket 클래스를 사용하여 함수를 작성하고 읽습니다. 내가 사용했다SocketTimeoutException 문제 - 예외 후 계속하는 방법

synchronized(socket){ 
.//write; 
//read; 
} 

나는 50-1000 ms마다 이것을하고있다. 문제는 누군가 (알 수없는 이유)가 케이블에서 빠져 나온 것입니다 (SocketTimeoutException이 있음). 그가 다시 안으로 pluged 때, 나는 계속 할 필요가있다. 무엇을할까요? catch 블록에서이 소켓을 닫고 새로 생성해야합니까? 또는 다른 것 ?

+0

하트 비트에 대해 읽으십시오. –

+0

'SocketTimeoutException'은 새로운 연결이 필요하고 계속 수행 된 작업의 상태를 계속해야하는 경우 치명적인 예외입니다. – bestsss

답변

0

아무 것도 할 필요가 없습니다. 그냥 계속하십시오. 예외가 발생하면 소켓을 닫고 다시 시작하십시오 (해당하는 경우).

0

나는 SocketTimeoutException을 잡아두고 다시 시도 할 데코레이터 구현을 만들 것이다. "정의 된"참 오류 조건을 표시하기 위해 예외를 실제로 전달하기 전에 특정 간격 동안 특정 횟수만큼 재 시도 할 수 있습니다. 원하는 경우 무기한으로 재 시도 할 수도 있습니다. 재시도 로직은 심지어 타임 아웃이 그것을 요구하기에 충분하지 않더라도, 소켓을 재설정하는 것을 캡슐화 할 수 있습니다.

또 다른 옵션으로 CircuitBreaker 패턴이 있지만 설명하는대로 디자인되지 않았습니다. CircuitBreaker는 일정 기간 동안 발생할 수있는 값 비싼 오류를 피하기 위해 조금 더 좋습니다.

관련 문제