当前位置:  开发笔记 > 编程语言 > 正文

如何从C#中的进程中捕获异常

如何解决《如何从C#中的进程中捕获异常》经验,为你挑选了1个好方法。

我在这里有一个接受跑步者计划,看起来像这样:

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是一个Process适配器,它将常规的.net进程包装成更可行的东西.但是我很难从启动过程中捕获任何异常(即catch语句在这里毫无意义)我正在使用类似的东西:

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

建立过程.有任何想法吗?



1> Jon Skeet..:

异常不会从一个进程流向另一个进程.您可以做的最好的事情是监视进程的退出代码 - 通常,退出代码0表示成功,任何其他退出代码表示错误.

当然,对于你正在推出的流程来说,情况是否是另一回事.


根本不会从一个进程抛出异常.如果进程抛出异常,它将在某处捕获或死亡.它完全是本地化的过程.
推荐阅读
雨天是最美
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有