Hi all

I'm having some basic newbie problem with catching an exception.
The following code does not seem to catch the URI::InvalidURIError,
because the line record.errors.add... is never executed.

  def validates_url_form_of(*attr_names)
    attr_name = attr_names.first.to_s

    validates_each(attr_name) do |record, attr_name, value|
      uri = URI.parse(record.send(attr_name.to_sym))
      if uri.class != URI::HTTP
        record.errors.add(attr_name, 'Only HTTP protocol addresses can
be used')
      end
    end
  rescue URI::InvalidURIError
    errors.add(attr_name, 'The format of the url is not valid.')
  end

I tried it the following way:

  def validates_url_form_of(*attr_names)
    attr_name = attr_names.first.to_s

    validates_each(attr_name) do |record, attr_name, value|
      uri = URI.parse(record.send(attr_name.to_sym))
      if uri.class != URI::HTTP
        record.errors.add(attr_name, 'Only HTTP protocol addresses can
be used')
      end
      rescue URI::InvalidURIError
        errors.add(attr_name, 'The format of the url is not valid.')
      end
    end
  end

But this gives me a syntax error.

What am I missing?

Thanks a lot.
Josh
-- 
Posted via http://www.ruby-forum.com/.