如何在ScriptEngine.SetTrace()发生异常时使用TracebackDelegate有效负载?

时间:2012-07-12 20:57:23

标签: c# ironpython

我正在使用ScriptEngine.SetTrace(),我想知道如何在发生异常时使用TracebackDelegate“payload”变量中包含的元组?我想获得异常的消息,方法名称,行号,文件名等。我可以从frame.f_code和frame.f_lineno获取最后三个,但其他信息似乎包含在有效负载元组对象中,我不知道如何提取。

1 个答案:

答案 0 :(得分:1)

没关系,我已经弄清楚了:

PythonTuple tuple = (PythonTuple)payload;
string err = PythonType.Get__name__((PythonType)tuple[0]);
PythonExceptions.BaseException e = (PythonExceptions.BaseException)tuple[1];
TraceBack tb = (TraceBack)tuple[2];
Debug.WriteLine(err + " " + e.clsException.Message);