从C#调用python时出现Catch异常

时间:2017-07-14 04:24:57

标签: c# python

感谢这个post,我设法从C#调用python脚本,但是,我无法检测python代码是否引发了异常。例如给出一个python脚本

def test():
    raise Exception

我的C#代码

Process p = new Process();
p.StartInfo = new ProcessStartInfo(cmd, args)
{
    RedirectStandardOutput = true,
    UseShellExecute = false,
    CreateNoWindow = true
};
p.Start();

using (StreamReader reader = p.StandardOutput)
{
    string stderr = p.StandardError.ReadToEnd();
    string result = reader.ReadToEnd(); 
}

无法通过string stderr = p.StandardError.ReadToEnd();读取错误消息实际上它本身引发了异常"An unhandled exception of type 'System.InvalidOperationException' occurred in System.dll"

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

要使用string stderr = p.StandardError.ReadToEnd();,您必须重定向错误输出 添加RedirectStandardError = true 你的流程初始化如下:

Process p = new Process();
p.StartInfo = new ProcessStartInfo(cmd, args)
{
    RedirectStandardOutput = true,
    UseShellExecute = false,
    CreateNoWindow = true,
    RedirectStandardError = true
};
p.Start();