Поймать исключение Ruby для регистрации, но не бросать его? - PullRequest
1 голос
/ 12 февраля 2010

Кажется, у меня зависает мозг. Я хочу перехватить возможное исключение Ruby во время цикла по нескольким объектам, чтобы считать его ошибкой для последующего отображения, но я не хочу, чтобы выполнение было остановлено; Я хочу, чтобы он пропустил плохую запись и продолжил. Как мне сделать это снова? Я не думаю, что смогу использовать retry, потому что он попытался бы снова повторить ту же запись, верно?

Ответы [ 2 ]

8 голосов
/ 12 февраля 2010
some_ary.each do |item|
  begin
    do_something_with item
  rescue Exception => e
    Logger.error "OH NO: #{e}"
  end
end

Выполнение должно продолжаться с ошибками, пойманными и зарегистрированными.

0 голосов
/ 12 февраля 2010

Не делай ничего. Если вы поймали исключение и обработали его (добавив плохой объект в список или что-то еще), просто продолжайте свой путь. Псевдо-код:

for each object foo
    try
        do something risky with foo
    catch
        badobjects.add(foo)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...