C# я не должен Циклично выполняться ни до какого исключения?

  • Первая находка корректная папка версии.NET. Используйте DirectorySearch/FileSearch для выполнения поиска.

  • Использование вышеупомянутый путь, чтобы назвать aspnet_regiis.exe и установить версию для веб-приложения от пользовательского действия.

    aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1

9
задан Jade M 24 October 2009 в 23:44
поделиться

5 ответов

Похоже на плохую идею, но все равно попробуйте что-нибудь вроде этого:

bool exceptionthrown = false;
while (!exceptionthrown)
{
  try
  {
    // Do magic here
  }
  catch (Exception)
  {
    exceptionthrown = true;
    throw;
  }
}
1
ответ дан 4 December 2019 в 08:01
поделиться

Это действительно зависит от того, что вы делаете, и от типа создаваемого исключения. Многие исключения нельзя исправить, просто попробовав еще раз с теми же входами / данными, и, таким образом, цикл будет просто продолжать генерировать исключение до бесконечности.

Вместо этого вы должны проверить соответствующие исключения, а затем обработать их в соответствующий способ для этих конкретных исключений.

1
ответ дан 4 December 2019 в 08:01
поделиться

Мне это кажется плохим дизайном. Общее правило: исключения не должны использоваться для управления потоком. Есть ряд причин для этого; а именно, обычно есть лучшие / более надежные методы, которые можно использовать для проверки вещей до того, как будет выбрано исключение, а также это снижает эффективность.

Тем не менее, просто для аргументации, вы можете сделать что-то вроде следующего:

while (true)
{
    try
    {
        // do stuff here
    }
    catch (MyException)
    {
        continue;
    }

    // all is good
    break;
}

Опять же - это не рекомендуемый способ. Я был бы рад предложить что-нибудь получше, если бы вы могли предоставить немного больше контекста / примеров /

22
ответ дан 4 December 2019 в 08:01
поделиться

Почему бы не вызвать функцию, которая на самом деле выполняет цикл, и иметь после нее ловушку, которая вызовет функцию снова.

private void loop() {
  for(...) {
  }
}

другой метод:

try {
  loop();
} catch(Exception e) {
  loop();
}
0
ответ дан 4 December 2019 в 08:01
поделиться

Что-то вроде:

bool done = false;
while( ! done )
{
  try
  {
    DoSomething();
    done = true;
  } catch(Exception ex)
  {
    HandleException(ex);
  }
}

Как сказал Нолдорин, пахнет плохим дизайном. Вы используете исключения для управления потоком программы.

0
ответ дан 4 December 2019 в 08:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: