Я переименую ваш псевдокод, чтобы уточнить:
if lineA doesn't cause an error
execute lineA
elsif lineB doesn't cause an error
execute lineB
end
Это правильно, как вы хотели? Тогда почему бы не использовать
begin
lineA
rescue
error_handling
ensure
lineB
end
Если вы хотите сделать больше этого, вы можете вложить его, и, конечно, это хорошая идея, чтобы изменить некоторые новые методы из него.
Альтернативно сокращение:
valA = lineA rescue StandardError
lineB if valA.is_a?(Exception)
И, конечно, вы можете повторять это столько раз, сколько захотите! ;)