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 > > >