Можно ли избежать исключений в C #, продолжая выполнение кода? - PullRequest
7 голосов
/ 13 октября 2009

У меня есть следующий код C #. Всякий раз, когда обнаруживается исключение, скажем, в строке 1, я никогда не могу достичь других строк (2, 3, 4 и т. Д.).

try
{
    line1
    line2
    ...
}
catch (Exception ex)
{
    ...
}

Возможно ли в C # сказать, что если строка 1 генерирует исключение, просто перейдите к другим строкам (2, 3, 4 и т. Д.)?

Ответы [ 13 ]

1 голос
/ 13 октября 2009

Вы всегда можете сделать

try 
{
   line1
}
catch (Exception ex)
{
}
line2
...

Но нет ничего похожего на ключевое слово retry.

0 голосов
/ 13 октября 2009

Если возможно обработать ваше исключение и продолжить, вы должны локализовать свои блоки try / catch.

try
{
  line1;
}
catch (ExpectedException e)
{
  // Handle your exception, prepare data for the next lines
  // Could you have prevented the exception in the first place?
}

try
{
  line2;
  line3;
}
catch (AnotherExpectedException e)
{
  // Maybe this exception you can't continue from. Perhaps log it and throw;
}

Помните, что исключения являются исключительными. Если выдается исключение, что-то должно пойти не так. Вы должны попытаться предотвратить исключения в первую очередь.

0 голосов
/ 13 октября 2009
try
{
    line1
    line2
    ...
}
catch (Exception ex)
{
    ...
}
finally
{
    if(line1ErrorOccured)
    {
        line2
        ...
    }
}

не слишком об этом задумывался

...