It depends.
I see that the three descriptions of exceptions are different. Are there types of exceptions?
If you could write your code like this:
begin site = RedirectFollower.new(url).resolve rescue ExceptionType1 => e
If the types of exceptions are the same, you will still have a single salvation block, but you will decide what to do based on the regular expression. Perhaps something like:
begin site = RedirectFollower.new(url).resolve rescue Exception => e if e.message =~ /the scheme http does not accept registry part/
Does it help?
source share