【问题标题】:Catch run time exception of windows application捕获 Windows 应用程序的运行时异常
【发布时间】:2016-05-18 07:06:11
【问题描述】:

我有一些 Windows 应用程序。我将从控制台应用程序中一一运行所有这些应用程序。如果任何应用程序产生运行时异常,那么它应该保存该异常的详细信息并需要移动到下一个应用程序。

我已经尝试了以下链接中给出的解决方案: catch another process unhandled exception。 但这并不能解决我的问题。

例如: 从我的控制台应用程序中,调用名为“App1.exe”的 Windows 应用程序。如果 App1 给出运行时异常,则应由控制台应用程序记录并继续其余部分。

请任何人提供最佳解决方案或想法,以获取在运行时都提供异常的应用程序的未处理异常的详细信息。

【问题讨论】:

  • 为什么你的链接没有解决你的问题?
  • 在获得运行时异常时,它会显示异常窗口并站在那里关闭该窗口。但是对于我的要求,它不应该显示异常窗口。记录异常详细信息就足够了。

标签: process exception-handling windows-runtime runtimeexception unhandled-exception


【解决方案1】:

您的选择是其中之一或组合:

  • 在控制台应用中使用应用的返回码
  • 从应用本身和控制台应用中的处理日志文件中捕获和记录异常(例如在文件或 wathever 中)。

这是一个控制台应用程序的代码,它启动另一个应用程序并等待获取应用程序进程的返回码。如果您提到的异常发生在应用程序中,您会收到错误代码 255,如果没有错误,则为 0。

    static void Main(string[] args)
    {
        try
        {
            var process = Process.Start("WpfApplication1.exe");
            process.WaitForExit();
            Console.WriteLine("App exited with code " + process.ExitCode);
            Console.ReadKey();
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }

如果您不希望在应用程序的 UI 中显示异常,则必须在应用程序本身中捕获它们(并在需要时记录它们以在控制台应用程序中处理它们)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多