2012-01-14 5 views
-1

나는 어떤 웹 사이트에 로그인해야하는 프로그램을 만들었습니다. 문제가 발생하면 2 초 정도 기다린 다음 다시 시도하십시오. 함수는 다음과 같이 보입니다 :StackOverFlow 예외, 내 함수에 대한 대안?

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

그러나이 코드는 매시간 StackOverFlowExeptions를 제공하기 시작했습니다. 누구든지 그것을 해결하는 방법을 알고 있습니까?

답변

1

log_in()에 전화 할 때마다 스택에 함수를 추가하기 때문에 스택 오버플로 예외가 발생합니다. 이것은 :

public void log_in() 
{ 
    while (true) { 
     try 
     { 
      //login code 
      return; 
     } 
     catch 
     { 
     } 
    } 
} 
0

코드가 전혀 로그인 할 수 없으면 스택에 매번 새로운 함수 호출을 생성하기 때문에 계속해서 쓰일 수 있기 때문입니다.

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

을 그러나 전반적으로는 사용자/관리자에 몇 시간보고 오류가 발생한 후, 끝없이 로그인을 시도해서는 안 : 다음 코드는 작동합니다.