感谢这个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"
我该如何解决这个问题?
答案 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();