Robert Klemme
7/10/2007 6:48:00 AM
2007/7/9, Joel VanderWerf <vjoel@path.berkeley.edu>:
>
> There seem to be two problems with set_trace_func (or things I don't
> understand):
>
> 1. The following program does not print "done". It does not raise an
> exception. It *does* set the program's return code to false.
>
> set_trace_func proc { || }
> puts "done"
>
> It's not a correct program, but I expected an ArgumentError, rather than
> a silent exit.
>
> 2. The following program does not print the exception or "done". It does
> not raise an exception to the top level. It *does* set the program's
> return code to false.
>
> set_trace_func proc { |event, file, line, id, binding, classname|
> raise "foobar"
> }
>
> begin
> x = 1
> rescue => ex
> p ex
> end
>
> puts "done"
>
> Is it impossible to safely raise an exception inside of a trace func?
>
> This is in ruby 1.8.4 and 1.8.6.
It does not make sense to allow exceptions to be thrown from
set_trace_func. I do agree however that at least some form of warning
should be generated but I think the exception should be ignored
otherwise. But then again, since set_trace_func is more of a
debugging feature it's not too important to fix it IMHO.
Kind regards
robert