2012-01-14 16 views
-1

私はある時点でいくつかのウェブサイトにログインしなければならないプログラムを作成しました。何かがうまくいかない場合は、しばらくお待ちください、たとえば2秒後にもう一度お試しください。関数は次のようになります:StackOverFlow例外、私の機能のための代替?

public void log_in() 
{ 
    try 
    { 
     //login code 
    } 
    catch 
    { 
     Thread.Sleep(2000); 
     log_in(); 
    } 
} 

しかし、このコードは私に今やStackOverFlowExeptionsを与え始めました。誰もそれを解決する方法を知っていますか?

答えて

1

log_in()にコールするたびにスタックに関数が追加されるため、スタックオーバーフロー例外が発生しています。これは:

0

コードが全くログインできないと、スタック上で毎回新しい関数呼び出しを作成し続けるからです。次のコードは動作します:

public void log_in() 
{ 
    while(true) { 
     try { 
      //login code 
      return; 
     } 
     catch { 
      Thread.Sleep(2000); 
     } 
    } 
} 

しかし、全体的なユーザー/管理者には、いくつかの時間のレポートのエラーが発生した後、延々とログインしようとしないはずです。

関連する問題