This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Rerunning after an Exception (written by Steve Arneil) | ||
|---|---|---|
| Code | Expected | Actual |
def rescue_and_retry
error_fixed = false
begin
puts 'I am before the raise in the begin block.'
raise 'An error has occurred!' unless error_fixed
puts 'I am after the raise in the begin block.'
rescue
puts 'An exception was thrown! Retrying...'
error_fixed = true
retry
end
puts 'I am after the begin block.'
end
rescue_and_retry |
I am before the raise in the begin block. An exception was thrown! Retrying... I am before the raise in the begin block. I am after the raise in the begin block. I am after the begin block. |
I am before the raise in the begin block. An exception was thrown! Retrying... I am before the raise in the begin block. I am after the raise in the begin block. I am after the begin block. |
require 'open-uri'
def check_connection(max_tries=2, url='http://www.ruby-lang.org/')
tries = 0
begin
tries += 1
puts 'Checking connection...'
open(url) { puts 'Connection OK.' }
rescue Exception
puts 'Connection not OK!'
retry unless tries >= max_tries
end
end
check_connection |
Checking connection... Connection OK. |
Checking connection... Connection OK. |
check_connection(2, 'http://this.is.a.fake.url/') |
Checking connection... Connection not OK! Checking connection... Connection not OK! |
Checking connection... Connection not OK! Checking connection... Connection not OK! |