Обработка исключений без перерыва - PullRequest
4 голосов
/ 19 ноября 2011

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

в настоящее время мой код выглядит так

try

  try
  //statement1
  except 
  end;

  try
  //statement2
  except 
  end;

  try
  //statement3
  except 
  end;

finally
//something
end;

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

Есть ли лучший способ реализовать это

1 Ответ

5 голосов
/ 19 ноября 2011

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

Однако код выглядит немного странно для меня.Интересно, действительно ли вам нужно выполнять каждое утверждение?Обычно вы пишете:

try
  statement1;
  statement2;
  statement3;
except
  //handle exceptions
end;

Тогда, если есть исключение в statement1, две другие строки не будут выполняться.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...