[Ruby] exception

Timur Batyrshin batyrshin на ieml.ru
Чт Июн 21 12:29:39 MSD 2007


А можно как-нибудь вернуться из обработки эксепшна в ту же точку, где
он возник?

Допустим, есть у меня код:

begin
  IO.readlines(file).each do |s|
    storage.add(s) # => AddException
  end
rescue AddException
  # выдать ошибку о неправильном формате и продолжить обработку
rescue => err
  puts err
end

Как сделать, чтобы на AddException происходил возврат в точку, где он
возник, чтобы можно было выполнить next ?
Насколько я понял, retry здесь не подойдет, т.к. тогда весь цикл заново
будет отрабатывать.

Пока разбил эту конструкцию на два захода

begin
  lines=IO.readlines(file)
rescue
  ...
end

.. и 

lines.each do |s|
  begin
    storage.add(s) if s
  rescue
    ....
    s=nil
    retry
  end
end

Но может как-то элегантней это сделать можно?..


Подробная информация о списке рассылки Ruby