Florian Aßmann
6/27/2007 9:50:00 PM
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
>
>
>