StackOverFlow异常,我的功能的替代品?

时间:2012-01-14 22:06:32

标签: stack-overflow

我创建了一个程序,在某些时候必须登录某个网站。如果出现问题,我希望它等待一段时间,比如2秒,然后再试一次。所以函数看起来像这样:

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

但是这段代码开始偶尔给我StackOverFlowExeptions。有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您遇到了堆栈溢出异常,因为每次调用log_in()时,您都会将该函数添加到堆栈中。这个:

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

答案 1 :(得分:0)

是什么原因是如果代码根本无法登录,它每次都会在堆栈上创建新的函数调用。下一个代码可以工作:

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

但总的来说,在用户/管理员多次报告错误后,您不应该尝试无休止地登录。