我有一个在设计时用于配置各种属性的表单 我已经尝试了两种方法来执行表单级捕获所有异常:
(1)我在构造函数中为Application.ThreadException添加了一个处理程序 (2)我将表单的Show方法包装在Try / Catch块
中当我通过向表单添加属性网格并将我的组件设置为SelectedObject来测试时,这两个都在运行时工作。
然而,在设计时,表格只是关闭而没有任何消息;我的消息和任何消息都没有解释存在未处理的异常。
有什么想法吗?
ETA:这与设计时的调试无关。它是关于当我的类型编辑器遇到未处理的异常时如何向用户显示友好消息。
答案 0 :(得分:0)
在技术上,您在设计时没有Application
对象,并且它不会像您一样调用Show()
方法。捕获异常的最佳方法是围绕设计者在使用try / catch加载时出现问题并抛出异常的有问题的方法或属性。
只是为了测试,继续向表单添加一个名为IamGoingToThrowAnException
的虚拟属性,并在属性的getter中执行throw new System.Exception("Caught me in design mode")
,如下所示:
public string IamGoingToThrowAnException
{
get
{
throw new System.Exception("Caught me in design mode.");
}
}
同样的事情适用于通过InitializeComponents
方法或表单构造函数初始化的任何方法或属性。