What is the difference between using ensure
:
begin
foo_process
rescue
bar_process
ensure
baz_process
end
and putting the process after the begin
... rescue
... end
block?
begin
foo_process
rescue
bar_process
end
baz_process
What is the difference between using else
:
begin
foo_process
rescue
bar_process
else
baz_process
end
and continuing that process before rescue
(supposing that baz_process
does not raise an error)?
begin
foo_process
baz_process
rescue
bar_process
end
Using ensure
, baz_process
is alway executed even though foo_process
throw exception, return from method.
For example,
def foo_process
puts 'foo_process'
return 111
end
def f1
begin
return foo_process
rescue
puts 'bar_process'
ensure
puts 'baz_process'
end
end
def f2
begin
return foo_process
rescue
puts 'bar_process'
end
puts 'baz_process'
end
>> f1
foo_process
baz_process
=> 111
>> f2
foo_process
=> 111