使用C#的System.Diagnostics.Process对象,我启动一个非托管的exe,稍后启动另一个非托管的exe。
第二个exe引起了一个未处理的异常,我希望我的应用程序忽略,但似乎无法实现。
当我启动第一个进程时,我正在使用try / catch语句,但它似乎没有捕获第二个进程引发的异常。发生异常时,即时调试器会通知我并暂停我的应用程序,直到我手动单击“是”我要调试或“否”。然后我的申请继续进行。
JIT调试器没有抛出异常的2ndprocess.exe的源代码。所以,它并没有告诉我异常是什么。我真的不在乎异常是什么,我只是想知道如何捕获并忽略它,所以我的应用程序不会被它停止。到异常发生时,无论如何都要完成工作。
任何人都可以提供一些见解吗?
答案 0 :(得分:1)
由于您使用process.start实际启动应用程序,因此应用程序会创建一个单独的应用程序域。从该应用程序捕获异常并不是我认为可能的事情,因为由于该过程失败,JIT对话框很可能会出现。
虽然不是解决方案,但如果需要,你可以stop the dialog,但这有其自身的问题。
答案 1 :(得分:1)
您应该正确处理第二个可执行文件中的异常。你的主程序不会捕获异常,因为它没有抛出异常,它正在执行的是。
编辑:
您是否可以访问第二个进程的源(抛出异常的进程)?您的应用程序不应该只是崩溃。如果在第二个过程中正确处理了异常情况,则在主应用程序中不会出现此问题。
EDIT2:
由于您可以访问源代码(开源),我建议您修复该错误。这将以两种方式帮助您:
1)你的程序最终会起作用 2)您可以说您参与了一个开源项目。
而且,作为特殊奖励,您可以帮助您经常使用的项目。的赢/赢强>