2009-05-07 1 views
0

일부 정보를 업데이트하는 중이고 네트워크 연결이 끊어지는 것으로 가정합니다.네트워크 오류 코드를 처리하고 다시 시작하는 방법은 무엇입니까?

그런 상황을 처리하고 코드가 마지막으로 실행 된 곳에서 재개하려면 어떻게해야합니까?

내가 생각할 수있는 가능한 접근법 중 하나는 예외를 잡는 것입니다. 논리를 다시 실행하십시오.

동안 (NetworkProblem) {

NetworkProblem = 거짓; 시도 {

// 1 단계 - DB에서 정보를 읽기 // 2 단계 - 클래스를 저장하는 객체 // 3 단계 - 정보 를 업데이트 // 4 단계 - 다른 웹 서버 에 연결 // 5 단계 - 업데이트 정보

} catch (NetworkgoneException) { NetworkProblem = true;
// 다시 연결을 시도합니다. 다시 얼마나 오래 걸릴지는 알 수 없습니다. }

}

답변

2

는 원칙적으로 당신의 접근 방식은 좋아 보인다. 고려해야 할 몇 가지 사항 :

  • 무기한 재 시도를 원하지 않습니다. 최대 재시도 횟수를 확인한 후 중단하십시오.
  • 보너스 포인트의 경우 재 시도가 필요한 오류와 그렇지 않은 오류 (예 : 신뢰할 수있는 부정 DNS 응답)를 구분합니다.
  • 의사 소통에서 성취하려는 것을 생각하십시오. 일부 데이터가 통과하고 일부 데이터가 통과하지 못하면 어떻게됩니까? 복제 행위를 피하기 위해 어떤 종류의 거래 개념이 필요합니까?
+1

통화 중 루프를 피하십시오. – iny

관련 문제