Without any specific reference to Python.Net or C#, my experience has been that
cross-process or cross-language calling is made easier by defining a routine on
the receiving side that accepts parameters of a string to be run and an
indication of whether a return value is desired. The called routine sets up
its own try/except block, and runs the string. The return value is a tuple of
two values: a boolean indicating whether an error occurred and data. If the
boolean indicates failure, the data is the error message as a string or, if you
want, a more complex value with error message and execution state information.
If the boolean indicates success, the data is the result of running the string
if requested or an empty value. (Avoiding sending a potentially large value
back as a result is an optimization in the case where the caller doesn't need
it.)
When you do this, you can use all the power of the called environment to do
error-handling in a routine that's written once and re-used.
Good luck.
At 04:37 AM 3/4/2007, Seshagiri Cherukuri wrote
>hi All,
>
>I have embedded pythonnet into my C# application and this works great as far
>as creating .net objects from python, executing methods etc.
>Here I am using the RunSimpleString (the PyRun_SimpleString) wrapper to send
>commands from the C# application to the pythonnet.
>
>However I am facing the following problems:
>
>1. After RunSimpleString, PyErr_Occurred or PyErr_Fetch are not able to detect
>any exceptions even if they did occur
>- for example, consider the code - curErr =
>PythonEngine.RunSimpleString("10/0\n" );
>- this code does return a -1 value indicating error.
>- however after this none of PyErr_Occurred or PyErr_Fetch do not detect this
>error
>- from python documentation it looks like there is no way to obtain the
>exception information
>
>2. using RunString
>- because of above problem I want to send a multi-line code including a
>try-except: block
>- I have tried using RunString with all the three modes - Py_eval_input,
>Py_single_input and Py_file_input
>- The RunString works only if the code does not have any .net objects or does
>not include any .net exceptions
>- If the code sent to RunString includes a .net object e.g. obj, then
>RunString always returns in NameError, obj is not defined
>
>3. Strangely, if I run the console application, it is able to work with .net
>exceptions - both .net and user defined exceptions
>
>4. Is this because of the new dictionary created while in RunString?
>
>thanks
>
>Sesh Cherukuri
J. Merrill / Analytical Software Corp
_________________________________________________
Python.NET mailing list - PythonDotNet@python.org
http://mail.python.org/mailman/listinfo/pythondotnet