首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将两个不同的异常处理程序附加到程序中?

将两个不同的异常处理程序附加到程序中?
EN

Stack Overflow用户
提问于 2015-09-25 11:48:15
回答 1查看 104关注 0票数 2

在我的应用程序中,我使用的是免费的NBug崩溃报告库。为了将其集成到项目中,您需要在Program.cs中添加这两行:

代码语言:javascript
复制
AppDomain.CurrentDomain.UnhandledException += NBug.Handler.UnhandledException;
Application.ThreadException += NBug.Handler.ThreadException;

但是,在程序崩溃的情况下,我需要运行一段代码。这段代码需要清理mysql数据库中的一些条目。我想简单地在NBug事件后添加额外的事件句柄:

代码语言:javascript
复制
AppDomain.CurrentDomain.UnhandledException += NBug.Handler.UnhandledException;
Application.ThreadException += NBug.Handler.ThreadException;
Application.ThreadException += new ThreadExceptionEventHandler(mysqlcleanup);
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(mysqlcleanup1);

但是,在这种情况下,程序只执行mysql清理事件,而忽略NBug事件。有可能有多个异常处理程序吗?我想编辑NBug源代码来运行mysql命令,但这意味着将mysql库附加到该项目上,这并不理想。

任何想法都很受欢迎。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-25 12:33:36

您只可以尝试将AppDomain异常连接到事件处理程序。然后创建2个您自己的异常事件,与Appdomain的.挂钩NBug到您自己的事件相同的签名。在事件处理程序中,执行mysql清理,然后引发您自己的事件,这些事件应该通知NBug。不知道这个解决办法是否有效..。

我只想举例说明一个事件:

创建以下事件:

代码语言:javascript
复制
public event UnhandledExceptionEventHandler OnUnhandledException;

从应用程序域异常中删除NBug分配,只保留您自己分配的。在这里,您将NBug方法分配给新事件,如下所示:

代码语言:javascript
复制
OnUnhandledException += Nbug..... 

就像你把它分配给Appdomains事件一样。然后在清理mysql的方法中实现:

代码语言:javascript
复制
OnUnhandledException(sender, unhandledExceptionEventArgs);

希望这能有所帮助。请注意,最好在调用事件之前先检查您的事件是否已被分配:

代码语言:javascript
复制
if (OnUnhandledException != null)
OnUnhandledException(sender, unhandledExceptionEventArgs);

但是在您的例子中,您知道它被分配给NBug。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32781529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档