I've given it some thought. I would like to avoid wrapping the code in "begin - rescue" and instead catch the exception in c#. Then just send the ruby methods "message" and "backtrace" to the Ruby-exception-object from C#. How would that be done? Any other hints?-- Henon
On Tue, Feb 17, 2009 at 11:36 PM, Meinrad Recheis <meinrad.rech...@gmail.com > wrote: > hello, > > I am now currently using this ugly hack to get a reasonable (let's say user > friendly) exception backtrace from an error in executed code: > > public object Execute(string code, ScriptScope scope) > { > code = @"begin > _=( > "+code+@" > ) > rescue Exception > self.__message__=$!.message.to_clr_string > self.__backtrace__ = $!.backtrace > throw > end"; > object result = null; > try > { > LogManager.GetLogger("Ruby").Debug("\r\n" + code); > result = m_engine.Execute(code, scope); > > } > catch (Exception e) > { > var backtrace = > scope.GetVariable<RubyArray>("__backtrace__"); > string msg = scope.GetVariable<string>("__message__") > +"\r\n" + string.Join("\r\n", backtrace.Select(s => > s.ToString()).ToArray()); > > LogManager.GetLogger("Ruby").Error(msg); > } > return result; > } > Even though it seems to work well I am absolutely not satisfied with it. Is > there a better way to do this? > -- henon >
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core