From: Richard Date: 2006-12-17T13:05:09+09:00 Subject: Re: Trapping error not caught by rescue Exception -- How to? Hi Daniel, Thanks for your results. I suspect you were running on Uni*. I was running in SciTE over WindowsXP. When I ran the program in a Command window, I saw what the problem is: in Windows, the date command waits for keyboard input specifying a new system date. That wasn't apparent when I was running under SciTE. So, all's well in my Ruby sandbox. Regards, Richard Daniel Finnie wrote: > Ruby doesn't hang when I run that code. > > This is the output: > daniel@daniel-desktop:~$ ruby /tmp/tmp.rb > expr=5**2, expr.class=String > eval(expr)=25 > expr=date, expr.class=String > ERROR: undefined local variable or method `date' for main:Object > ERROR: undefined method `strip!' for nil:NilClass > expr=y, expr.class=String > ERROR: undefined local variable or method `y' for main:Object > expr=`date`, expr.class=String > eval(expr)=Sat Dec 16 22:01:37 EST 2006 > > Richard wrote: > > Hi, > > > > The fourth data line in the program below hangs rather than submitting > > to the rescue clause. How can I trap that kind of error? > > > > I'm running WinXP-Pro/SP2, Ruby 1.8.2-15, Rails 1.1.6, MySQL > > 5.0.15-nt, SciTE 1.59 > > > > TIA, > > Richard > > > > === code start === > > begin > > DATA.each do |line| > > var, expr, excess = line.chomp.split(/=/, 3) > > var.strip!; expr.strip! > > puts "expr=" + expr + ", expr.class=" +expr.class.to_s > > puts "eval(expr)=" + eval(expr).to_s > > end > > rescue Exception => eMsg > > puts "ERROR: " + eMsg > > retry > > end > > > > __END__ > > a = 5**2 =# 25 > > b =date =# undefined local variable or method `date' for > > main:Object > > c = y =# undefined local variable or method `y' for main:Object > > c =`date` =# (ruby hangs; Ctrl-C kills it) > > === code end === > > > > > >