Сложно дать конкретный ответ, потому что я не знаю, что делает ваша программа.
Но в общих чертах я считаю, что лучший способ справиться с этим - поместить код, который может дать сбой, в один или несколько отдельных методов (и, возможно, имя метода должно отражать это).
Это имеет ряд преимуществ. Прежде всего, это означает, что остальная часть вашего кода не должна хеджироваться с обработкой исключений; во-вторых, если «опасные» действия тщательно разделены на логические группы, вы можете выполнять обработку исключений в методе, а не в реальных действиях. Глупый пример:
my_list = get_list("one") # perfectly safe method
my_list.each do |x|
begin
x.dangerous_file_method() # dangerous method
rescue
x.status = 1
end
end