【问题标题】:Design time exception not caught in .Net Winforms.Net Winforms 中未捕获设计时异常
【发布时间】:2010-10-04 18:50:55
【问题描述】:

我有一个在设计时用于配置各种属性的表单。
我尝试了两种方法来执行表单级捕获所有异常:

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

当我通过将属性网格添加到表单并将我的组件设置为 SelectedObject 进行测试时,这两种方法都在运行时工作。

但是,在设计时,表单只是简单地关闭,没有任何消息;我的消息和任何解释存在未处理异常的消息都没有。

有什么想法吗?

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

【问题讨论】:

    标签: c# .net vb.net exception-handling design-time


    【解决方案1】:

    从技术上讲,您在设计时没有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 方法或表单的构造函数初始化的任何方法或属性,同样适用。

    【讨论】:

      猜你喜欢
      • 2011-11-24
      • 2012-06-07
      • 1970-01-01
      • 1970-01-01
      • 2011-10-24
      • 1970-01-01
      • 2010-09-28
      • 2012-05-31
      相关资源
      最近更新 更多