当代码由COM调用启动时,如何捕获C#.net中未处理的异常?

当代码由COM调用启动时,如何捕获C#.net中未处理的异常?,c#,com,unhandled-exception,C#,Com,Unhandled Exception,当代码由COM调用启动时,如何捕获C#.net中未处理的异常 我已尝试订阅未处理的异常事件,如下所示: AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException); 但是我认为从COM调用的代码被加载到进程地址空间而不是AppDomain。 因此,我猜当前的应用程序域不在我的C#应用程序的边界内,而是在调用外部EXE文件中(该文件不是.Net语言)

当代码由COM调用启动时,如何捕获C#.net中未处理的异常

我已尝试订阅未处理的异常事件,如下所示:

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException);
但是我认为从COM调用的代码被加载到进程地址空间而不是AppDomain。 因此,我猜当前的应用程序域不在我的C#应用程序的边界内,而是在调用外部EXE文件中(该文件不是.Net语言)

我试图在到达调用EXE之前捕获(并记录)异常,以提供更好的错误信息。现在我只得到一个“调用外部函数时出错”


更新:请注意,我们使用事件捕获HandleProcessCorruptedStateExceptions属性,因此添加更多的try/catch没有帮助。

为什么不将所有入口点的try/catch都放入c#?Wpf?Winforms?ASP.net?如果win forms相关,您是否尝试过application.threadexception?这将处理UI上的异常thread@Derek这个问题有两个方面:1。由于缺少入口点上的try/Catch错误而错过的Catch异常。2.捕获(记录)SEH和不可重启的异常,如“AccessViloation”。第1部分可以通过让一个“主管”人员时不时地检查代码,检查是否每个人都在做他们的工作并添加try/catch来解决。try/catch对第2部分没有帮助,因为AppDomain事件只“捕获”了这些异常。@cdkMoose抱歉:没有使用这些系统。Hans是对的:我们从PowerBuilder调用它。@HansPassant从PowerBuilder到C#的入口点创建了一个会话对象,然后所有对其余代码的访问都通过这个过程。我是否可以将会话类加载到AppDomain并使用该域捕获异常?