如果从c#代码中调用,在EXE文件中捕获错误

本文关键字:文件 EXE 错误 代码 调用 如果 | 更新日期: 2023-09-27 18:07:13

我正在从c#代码运行一个exe文件,由于某些原因错误发生在该exe文件中。它一直等待,最终给出一个弹出错误"abc.exe已停止工作"等,但它不退出。

 //The below code is calling it successfully
     public bool callExe(string exePath)
            {
                Log("EXE excution Started : " + exePath, INFO_TAG);
                try
                {
                    Process exeProcess = new Process();
                    ProcessStartInfo startInfo = new ProcessStartInfo();
                    startInfo.FileName = exePath;
                    exeProcess.StartInfo = startInfo;
                    startInfo.Arguments = this.prjId.ToString();
                    exeProcess.Start();
                    exeProcess.WaitForExit();
                    int exitCode = exeProcess.ExitCode;
                    return true;
                }
                catch (Exception e)
                {
                    errorCode = EXE_ERROR;
                    return false;
                }
            }

虽然我可以捕获退出代码,但我只能在它退出时这样做。

如果从c#代码中调用,在EXE文件中捕获错误

这个链接可能有用https://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo.redirectstandarderror%28v=vs.110%29.aspx

订阅ErrorDataReceived事件并获取错误消息。在这里输入链接描述

与其等待进程退出,不如订阅进程退出事件

如果你的exe给出某种未处理的异常,你将无法得到确切的错误。Windows事件查看器可以帮助您获取错误编号和可能的原因。