From: "Gerard A.W. Vreeswijk" Date: 2003-07-07T17:15:45+09:00 Subject: trapping compile time errors Hi, I want to catch compile time errors with my own method. In Perl, you can do this: $SIG{__DIE__} = \¨ sub die { print "Error here. May be any error, including SyntaxError\n"; exit 1; } I.e., you can trap die and define your own. Does anyone know how to do this in Ruby? I have tried opening up Exception class and redefining some of the methods there. No success. Eventually, I came up with the following, which is not as I imagined. It's ugly. I am sure there exist better ways but currently I ran out of ideas. Does anyone have better ideas? Thanks. =============================================================== #!/usr/bin/ruby begin # From Pickaxe book: # eval( aString [, aBinding [ file [ line ] ] ]) -> anObject # Evaluates the Ruby expression(s) in aString. If aBinding is # given, the evaluation is performed in its context. The # binding may be a Binding object or a Proc object. If the # optional file and line parameters are present, they will # be used when reporting syntax errors. eval DATA.gets(nil), nil, __FILE__, DATA.lineno # gets(nil), because we want to set the line separator to be # nil so that entire DATA is slurped into one big string. rescue Exception puts "Error here. May be any error, including SyntaxError" # Redirect STDERR to STDOUT STDERR.reopen(STDOUT) # re-raise error. Now appears on STDOUT raise end __END__ # Your program here, including possible syntax errors. %&^&$% =============================================================== Outputs: Error here. May be any error, including SyntaxError try.rb:13: compile error (SyntaxError) try.rb:13: parse error %&^&$% ^ >Exit code: 1 Time: 0.229 ===============================================================