从任何派生线程捕获异常的任何方法
本文关键字:任何 方法 捕获异常 线程 派生 | 更新日期: 2023-09-27 18:20:21
我正在开发一个支持插件的应用程序。插件可能由第三方开发。
目前,我有一个try/catch处理程序来处理对插件的任何调用,以保护我的应用程序免受第三方代码的攻击。捕获记录了问题,但不会使我的应用程序崩溃。
我的问题是当第三方代码生成线程来完成一些工作时。我的管理员没有抓到这些。
有没有办法从"这个函数派生的任何东西"中捕获异常?还是我只需要在我的全局处理程序中捕获它们?
当一个插件失败并在同一个AppDomain中运行时,最好让应用程序自己失败;从而停止应用程序。当插件崩溃时,您将不知道应用程序处于什么状态。
另一种选择是在自己的(子)AppDomain中运行插件。通过这种方式,您可以卸载该应用程序域,并在新创建的AppDomain中重新启动该插件,而无需重新启动应用程序。
您可能需要了解托管扩展性框架(MEF)。这是专门为这些场景设计的。
关于您的第二个愿望-在全局处理程序中捕获异常,您可以在应用程序域中订阅UnhandledException
事件。它将捕获代码中未捕获的所有异常。
它主要用于记录异常的信息。但是,它不会使您的应用程序免于终止。