我创建了一个程序,在某些时候必须登录某个网站。如果出现问题,我希望它等待一段时间,比如2秒,然后再试一次。所以函数看起来像这样:
public void log_in ()
{
try
{
//login code
}
catch
{
Thread.Sleep(2000);
log_in();
}
}
但是这段代码开始偶尔给我StackOverFlowExeptions。有谁知道如何解决这个问题?
答案 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);
}
}
}
但总的来说,在用户/管理员多次报告错误后,您不应该尝试无休止地登录。