启动后检查Process对象错误

时间:2013-06-24 14:40:24

标签: c# process runtime-error

我有一个方法可以创建一个Process对象,设置参数并为其加星标。在下面的代码中,哪种检查错误的方法更正确? 这个:

public void DoSomething(string command)
    {
        try
        {
            var p = new Process();
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.FileName = command;
            p.Start();
            p.WaitForExit();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }

或者这个:

public void DoSomething(string command)
    {
        Process p = new Process();
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.RedirectStandardError = true;
        p.StartInfo.FileName = command;
        p.Start();
        string error = p.StandardError.ReadToEnd();
        p.WaitForExit();

        if (!string.IsNullOrEmpty(error))
        {
            Console.WriteLine(error);
        }
    }

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我会建议第一种方法,但将所有代码行放在try块中并不是一种好方法。仅对可能出现异常的行使用try块:

public void DoSomething(string command)
    {

        var p = new Process();
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.FileName = command;
        try
        {
            p.Start();
            p.WaitForExit();
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }
    }

答案 1 :(得分:0)

退出后应该读取错误。你可以在下面试试。

 process.WaitForExit();

 //Reading output and error
 string output = process.StandardOutput.ReadToEnd();
 string strReturnValue = process.StandardError.ReadToEnd();