我想订阅AppDomain.CurrentDomain.UnhandledException事件以捕获任何错误,因为我正在尝试新的设计模式,我不希望在每个事件上都设置try catch。
通常在win form app中有一个主入口点,但这是一个由另一个应用程序调用的类库。
在类库中是否有一个主入口点可以挂钩此事件,或者只是在类库中是不可能的,除非我确定在其他任何方法之前调用一个方法?
答案 0 :(得分:1)
不,类库没有主入口点。如果您觉得自己需要一个,那么您可以通过公共API表面区域在概念上创建一个虚拟API。换句话说,限制哪些对象是公共的,并且在那些公共对象中确保在某个时刻进行调用。在做任何事情之前,可以采取某种工厂调用来设置您的库。
答案 1 :(得分:0)
// Set the unhandled exception mode to force errors to go through our handler.
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
// Add the event handler for handling thread exceptions to the event.
AppDomain.CurrentDomain.UnhandledException +=
new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
显然,这并没有给你一些非声明性的方式来分配处理程序,ala在app.config中确定一个跟踪侦听器但是,这给了我一个想法。
您可以编写自己的配置部分来执行此代码。然后当加载配置时你可以分配事件处理程序,我会找到一些如何做到这一点的链接...
但是,您的配置必须存在于主应用程序中,所以这可能不对。
编辑抱歉,如果没有某种类型的IoC框架,我认为没有办法做到这一点,还有什么能加载你的课程。我能想到的唯一选择都需要对主应用程序进行某种更改。
我对错误感兴趣。