【问题标题】:C# how to organize error message returning between two appC#如何组织两个应用程序之间返回的错误消息
【发布时间】:2016-05-18 11:20:59
【问题描述】:

我有在另一个应用程序中执行的控制台应用程序。问题是第二个应用程序无法捕获第一个应用程序抛出的异常(使用 Process 运行)。所以我必须编写一些包含我的返回代码和适当消息的类。以便运行我的可执行文件的应用程序可以使用它并根据返回代码显示错误消息。但是我不知道这种事情应该怎么做。

【问题讨论】:

  • 为什么不在try-catch 中启动Process 并在那里捕获错误?
  • process.ExitCode 包含int main()(或Environment.Exit(X))的返回
  • 您可以在每个应用程序中捕获所有异常。您想要吗?
  • ChristophKn:第一个应用程序无法捕获第二个应用程序抛出的异常。
  • Alex K:我明白,但我还需要错误消息,而不仅仅是代码。所以跑步者可以以某种方式获得有关错误代码的消息

标签: c#


【解决方案1】:

这是我偶然发现的一篇旧帖子,但为什么不回答?

我认为您正在寻找的是错误流。在 Windows 和大多数其他系统中,操作系统将其称为stderr。我将发布一些链接以供阅读,但本质上,单独的执行环境或应用程序仅返回告诉操作系统天气或应用程序未成功退出(完成)(0)或遇到错误(-1)的代码。在 Windows 中,有两个单独的流 stdout 我们将执行消息写入其中,或者 stderr 我们也写入错误。然后,您的其他应用程序可以读取这些蒸汽。查看这些以获取更多信息:

How to capture a Processes STDOUT and STDERR line by line as they occur, during process operation. (C#)

https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standarderror(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput(v=vs.110).aspx

根据您的需要,还有一些其他更复杂的解决方案,例如“互操作性库”或写入文件。

互操作信息: https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/interop/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 2013-11-22
    • 2012-02-12
    • 2022-01-13
    • 1970-01-01
    相关资源
    最近更新 更多