2010-10-04 21 views
2

我有一个在设计时用来配置各种属性的表单。
我试过两种方法来做一个表单级捕获所有异常:设计时间异常没有被捕获.Net Winforms

(1)我在构造函数中添加一个处理程序给Application.ThreadException。 (2)我将TryCatch块中的Show方法包装到一个Try/Catch块中

这两个函数都在运行时工作,当我通过向表单添加属性网格并将我的组件设置为SelectedObject。

但是,在设计时,表单只是简单地关闭而没有任何消息;我的信息和消息都没有说明有没有未处理的例外情况。

任何想法? ETA:这不是关于设计时的调试。这是关于如何在我的类型编辑器遇到未处理的异常时向用户显示友好的消息。

回答

0

在技术上,您在设计时没有Application对象,并且它不像您所做的那样调用Show()方法。捕捉异常的最好方法是围绕设计者在尝试/ catch中加载时遇到问题的方法或属性并抛出异常。

只是为了测试,继续前进,一个虚拟的属性添加到您的形式,称为IamGoingToThrowAnException,并在吸气的财产做了throw new System.Exception("Caught me in design mode"),如下所示:

public string IamGoingToThrowAnException 
{ 
    get 
    { 
     throw new System.Exception("Caught me in design mode."); 
    } 
} 

同样的事情适用于任何方法或通过InitializeComponents方法或表单的构造函数初始化的属性。