I can't catch it even with rescue Object... wow.

you could also eval it, k, thats even more evil:

begin
  re = eval '/abc/'
  p re
  re = eval '/[/'
rescue SyntaxError
  puts 'hit'
end

Sincerely
Florian

James Edward Gray II schrieb:
> On Jun 27, 2007, at 3:05 PM, Tim Hunter wrote:
> 
>> th8254 wrote:
>>> How would I write a rescue method to recover from a failed regexp
>>> parsing?
>>>
>>> -Thanks
>>>
>>>
>> I don't think that raises an error. You'd have to check for a nil
>> result instead.
> 
> I took the question to mean, how would I recover from a malformed Regexp
> error like:
> 
>>> re = /[/
> SyntaxError: compile error
> (irb):1: invalid regular expression; '[' can't be the last character ie.
> can't start range at the end of pattern: /[/
>         from (irb):1
> 
> I don't know of a way to recover from that specific example either,
> which is why I didn't jump to answer:
> 
>>> begin
> ?>   re = /[/
>>> rescue SyntaxError
>>>   puts "Your Regexp is malformed."
>>> end
> SyntaxError: compile error
> (irb):3: invalid regular expression; '[' can't be the last character ie.
> can't start range at the end of pattern: /[/
>         from (irb):6
> 
> But, if you change the way the expression is built, it does seem to
> become a recoverable error:
> 
>>> begin
> ?>   re = Regexp.new("[")
>>> rescue RegexpError
>>>   puts "Your Regexp is malformed."
>>> end
> Your Regexp is malformed.
> => nil
> 
> James Edward Gray II
> 
> 
>