0

不適切な再帰と StackOverflowError に関連するプログラミングの問題があります。私は別のスレッドでこのケースを持っています:

public void subscribe(final String channel) {
   try {
      // blocking command
      client.subscribe(channel);
   } catch(ConnectionException e) {
      subscribe(channel);
   }
}

この ConnectionException が定期的にのみ発生しているとします (毎分など)。数百回後、明らかに StackOverflowError が発生します。

何が起こっているかはわかっていますが、これを解決する方法がわかりません (つまり、呼び出しスタックを増やさずにサイレントに再サブスクライブします)。何か案は?

4

2 に答える 2

1

彼のような単純なループを使用してみませんか?

public void subscribe(final String channel) {
   while(true){
       try {
          // blocking command
          client.subscribe(channel);
          return;
       } catch(ConnectionException e) {
          // ignored
       }
   }
}
于 2013-06-01T08:15:42.557 に答える