我有一个方法可以创建一个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);
}
}
感谢您的帮助。
答案 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();