之前我使用过Application.ThreadException
和AppDomain.CurrentDomain.UnhandledException
,但通常我只将它用于单个表单。通常我会使用Main
中的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");
}
在我的新情况下,我的当前项目有很多表单,其中包含其他表单继承的单个基本表单。
我想要做的是处理从基本表单代码中派生形式中抛出的异常 - 我将上面的代码插入到我的base的构造函数中,希望我可以这样做,但是当有异常时,它没有参加比赛。
为什么我不能在构造函数和任何替代方法中执行此操作?
注意:我之前在Vb.net
而不是C#
中提出此问题,因此删除了我之前的问题并重构了我的代码,以便我可以得到C#
个答案。
答案 0 :(得分:1)
这些事件是全球事件;他们与个人形式无关。
您可以将当前代码保存在Main()
中,并且可以使用多种表单。 (除非你有多个UI线程)