0

我以前使用过Application.ThreadExceptionAppDomain.CurrentDomain.UnhandledException但通常我只将它用于单个表单。所以通常我会使用Mainin Program.cs

try {
    AppDomain.CurrentDomain.UnhandledException += (sender, e) => .Handle(sender, (Exception)e.ExceptionObject);
    Application.ThreadException += (sender, e) => ExceptionHandler.Handle(sender, e.Exception);
    Application.Run(ApplicationBase);
} catch (Exception ex) {
    MessageBox.Show("Handled Exception");
}

然而,在我的新情况下,我有许多用于当前项目的表单,其中一个基本表单是其他表单继承的。

我想要做的是处理从基本形式的代码中以派生形式抛出的异常 - 我将上面的代码放入我的基本构造函数中,希望我可以这样做,但是当出现异常时,它不会击中事件。

为什么我不能在构造函数和任何替代方案中这样做?

注意:我之前问过这个问题,Vb.net而不是C#删除了我之前的问题并重构了我的代码,以便我可以得到C#答案。

4

1 回答 1

1

这些事件是全球事件;它们与个别形式无关。

您可以保留当前代码Main(),它可以在多种表单中正常工作。(除非你有多个 UI 线程)

于 2012-12-11T16:10:29.117 回答