2009-05-07 7 views
0

Supposons que je suis en train de mettre à jour certaines informations et que la connexion réseau se déclenche.Comment gérer le code pour une panne réseau et revenir en arrière?

Comment dois-je écrire mon code pour gérer une telle situation et reprendre à partir de la dernière exécution du code?

Une approche possible que je pourrais penser est d'attraper l'exécution. et refais la logique à nouveau.

Tout (NetworkProblem) {

NetworkProblem = false; try {

// étape 1 - Info lecture de db // étape 2 - stockage sur des objets de classe // étape 3 - mise à jour d'informations // étape 4 - la connexion à un autre serveur web // étape 5 - informations de mise à jour

} catch (NetworkgoneException) { NetworkProblem = true;
// essayer de se connecter à nouveau - encore une fois je ne sais pas combien de temps cela prendra. }

}

Répondre

2

En principe votre approche semble ok. Quelques points à prendre en compte:

  • Vous ne voulez pas réessayer indéfiniment. Avoir un nombre de tentatives maximum, puis abandonner.
  • Pour les points bonus, distinguez les erreurs qui valent la peine d'être retenues de celles qui ne le sont pas (par exemple, réponse DNS négative faisant autorité). Pensez à ce que vous essayez d'accomplir dans votre communication. Que se passe-t-il si certaines données passent et d'autres non? Avez-vous besoin d'un concept de transaction pour éviter de déclencher des actions en double?
+1

Évitez les boucles occupées. – iny

Questions connexes