Вот мое лучшее предположение, основанное на том факте, что у вас есть МНОГО дополнительного кода, который мы не можем интерпретировать, не увидев весь код (именно поэтому лучше опубликовать самый минимальный пример, воссоздающий проблему как Jon Скит так чудесно сформулировал в своем блоге Написание идеального SO вопроса ).
Но вот мое предположение. Я догадываюсь и очень сильно чувствую, что у вас здесь безудержная рекурсия. Ваш метод scrapping1()
делает рекурсивные обращения к себе при исключениях и определенных условиях, которые не интерпретируются из параметров.
Поскольку эти рекурсивные вызовы зависят от локальных переменных или действий, а не от параметра, это делает ОЧЕНЬ трудным безопасный контроль того, что будет делать рекурсия, и вам, вероятно, не следует делать их в этом случае.
catch
{
// recursion here passing the SAME arg, what is to stop this?
scraping1(a);
return;
}
И
// WHERE does this 'i' come from? I don't see where it's incrementing!
// possible unsafe recursion...
if (price == 0.0 && i != 5)
{
// recursion here passing the SAME arg, no stop condition?
scraping1(a);
}
Еще одна вещь, которую вы можете сделать, это окружить тело вашего метода scraping1 () попыткой / уловкой, чтобы вы могли хотя бы увидеть исключение на экране и узнать, в какой строке оно происходит.
public void scraping1(object a)
{
try
{
// your method logic
}
catch (Exception ex)
{
Console.WriteLine(ex);
Console.Out.Flush();
}
}
Однако, если это рекурсия, вызывающая исключение StackOverflowException, CLR завершит ваш процесс. В этом случае закомментируйте эти рекурсивные вызовы и подумайте, что вы действительно пытаетесь сделать. Я не думаю, что вы действительно хотите сделать рекурсию в этом случае. Вы просто пытаетесь «повторить»?