From: Hugh Sasse Staff Elec Eng Date: 2000-08-10T13:10:19+01:00 Subject: [ruby-talk:04398] diags from eval. Can I get eval to be more specific when errors occur? neelix hgs 86 %> cat raise_test #!/usr/local/bin/ruby -w # test of raising to get a better traceback class Raisable < RuntimeError def initialize(astring) super end end class Raise_test def first_raise raise Raisable.new("Raise error in first_raise") end def second_raise begin first_raise # rescue # raise end end def initialize() second_raise end end raiser = Raise_test.new neelix hgs 87 %> cat raise_test.patch --- raise_test Thu Aug 10 12:52:16 2000 +++ raise_test.new Thu Aug 10 12:53:31 2000 @@ -2,6 +2,8 @@ # test of raising to get a better traceback +text = < raise_test raise_test:13:in `first_raise': Raise error in first_raise (Raisable) from raise_test:18:in `second_raise' from raise_test:24:in `initialize' from raise_test:28:in `new' from raise_test:28 neelix hgs 89 %> raise_test.new raise_test.new:34:in `eval': (eval):10:in `first_raise': Raise error in first_raise (Raisable) from raise_test.new:34 neelix hgs 90 %> The first is far more useful. This is with Ruby 1.4.4. I tried the rescue clause enabled and commented out to see if this made any differnce to the diagnostics but it does not, even under eval: neelix hgs 94 %> ./raise_test.new2 ./raise_test.new2:34:in `eval': (eval):10:in `first_raise': Raise error in first_raise (Raisable) from ./raise_test.new2:34 neelix hgs 95 %> /usr/local/bin/diff -u raise_test.new raise_test.new2 --- raise_test.new Thu Aug 10 12:53:31 2000 +++ raise_test.new2 Thu Aug 10 13:04:59 2000 @@ -18,8 +18,8 @@ def second_raise begin first_raise - # rescue - # raise + rescue + raise end end def initialize() neelix hgs 96 %> So I don't know how to improve the traceback information. Hugh hgs@dmu.ac.uk