gpt4 book ai didi

c# - 如何在 C# 中捕获进程中的异常

转载 作者:太空狗 更新时间:2023-10-30 00:06:46 25 4
gpt4 key购买 nike

我这里有一个验收运行程序,看起来像这样:

public Result Run(CommandParser parser)
{
var result = new Result();
var watch = new Stopwatch();

watch.Start();

try
{
_testConsole.Start();

parser.ForEachInput(input =>
{
_testConsole.StandardInput.WriteLine(input);
return _testConsole.TotalProcessorTime.TotalSeconds < parser.TimeLimit;
});

if (TimeLimitExceeded(parser.TimeLimit))
{
watch.Stop();
_testConsole.Kill();
ReportThatTestTimedOut(result);
}
else
{
result.Status = GetProgramOutput() == parser.Expected ? ResultStatus.Passed : ResultStatus.Failed;
watch.Stop();
}
}
catch (Exception)
{
result.Status = ResultStatus.Exception;
}

result.Elapsed = watch.Elapsed;
return result;
}

_testConsole 是一个流程适配器,它将常规 .net 流程包装成更可行的东西。然而,我确实很难从启动的进程中捕获任何异常(即 catch 语句在这里毫无意义)我正在使用类似的东西:

_process = new Process
{
StartInfo =
{
FileName = pathToProcess,
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
RedirectStandardError = true,
Arguments = arguments
}
};

设置流程。有什么想法吗?

最佳答案

异常不会从一个进程流向另一个进程。最好的办法是监视进程的退出代码 - 通常,退出代码 0 表示成功,任何其他退出代码表示错误。

当然,您启动的流程是否属于这种情况是另一回事。

关于c# - 如何在 C# 中捕获进程中的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/320767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com