Martin Maly wrote:
> When you catch the exception after g.Call(...), do you also examine the 
> exception's CallStack?

No, I did not! And thanks a lot, it indeed contains all the info I need:

   at script.hop$f1() in ...\script.py:line 10
   at IronPython.Objects.Function0.Call()
   at IronPython.Objects.Ops.Call(Object func)
   at script.init_session$f0(Object busSettings, Object
fileNamePrefix)...\script.py:l
ine 7

so that with a little processing, I can make my it easy to read!!

Thanks a lot for the help.

Stan.

> 
> I tried simpler variation on your code:
> 
> try {
>     engine.Import("x");
>     Function f = engine.Evaluate("x.f") as Function;
>     f.Call();
> } catch (Exception x) {
>     output.write(x.ToString());
>     output.write(x.StackTrace);
> }
> 
> Where x.py is:
> 
> def f():
>     return 1/0
> 
> And I got following output:
> 
> x.ToString():
> Attempted to divide by zero.
> 
> x.StackTrace:
>    at IronPython.Objects.IntOps.Divide(Int32 x, Int32 y) in 
> d:\Ip\IronPython\Src\IronPython\Objects\IntOps.cs:line 169
>    at IronPython.Objects.IntOps.FloorDivide(Int32 x, Object other) in 
> d:\Ip\IronPython\Src\IronPython\Objects\IntOps.cs:line 382
>    at IronPython.Objects.IntOps.Divide(Int32 x, Object other) in 
> d:\Ip\IronPython\Src\IronPython\Objects\IntOps.cs:line 164
>    at IronPython.Objects.Ops.Divide(Object x, Object y) in 
> d:\Ip\IronPython\Src\IronPython\Objects\Ops.cs:line 866
>    at x.f$f0() in D:\Ip\IronPython\Presentations\Editor\bin\Debug\x.py:line 2
>    at IronPython.Objects.Function0.Call() in 
> d:\Ip\IronPython\Src\IronPython\Objects\Function.cs:line 50
>    at Editor.Editor.RunScript(Object sender, EventArgs e) in 
> D:\Ip\IronPython\Presentations\Editor\Editor.cs:line 45
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Stanislas Pinte
> Sent: Wednesday, December 14, 2005 1:17 AM
> To: users@lists.ironpython.com
> Subject: [IronPython] Stack Traces in IronPython 0.96 do not contain python 
> stack trace
> 
> hello,
> 
> Has anyone an idea of the following:
> 
> I have a script:
> 
> 
>>#ScriptingLoopTest python code
>>
>>def init_session(settings, fileNamePrefix):
>>  pass
>>
>>def handle_message(message):
>>  passmmm
> 
> 
> and I use IronPython 0.96 as embedded scripting engine.
> 
> private PythonEngine engine = new PythonEngine();
> engine.Import(moduleName);
> f = engine.Evaluate(moduleName + ".init_session") as Function;
> g = engine.Evaluate(moduleName + ".handle_message") as Function;
> 
> when I do g.Call(...), IP detects that the passmm  symbol is not
> defined, and throws a PythonException.
> 
> This exception only contains that:
> 
> "name 'passmmm' not defined".
> 
> It doesn't contain the line number in the imported script, nor the
> trace, whereas Python 2.4 gives the following:
> 
> Python 2.4.2 (#67, Sep 28 2005, 12:41:11) [MSC v.1310 32 bit (Intel)] on
> win32
> Type "help", "copyright", "credits" or "license" for more information.
> 
>>>>def handle_message(message):
> 
> .     passmmm
> .
> 
>>>>handle_message(3)
> 
> Traceback (most recent call last):
>   File "<stdin>", line 1, in ?
>   File "<stdin>", line 2, in handle_message
> NameError: global name 'passmmm' is not defined
> 
> 
> It is very important for me to be able to give the user that kind of
> feedback...is there a way to do it?
> 
> Thanks a lot,
> 
> Stan.
> 
> 
> _______________________________________________
> users mailing list
> users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> _______________________________________________
> users mailing list
> users@lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
> 
> 


_______________________________________________
users mailing list
users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to