【问题标题】:How to catch an Exception in an Event-method [closed]如何在事件方法中捕获异常 [关闭]
【发布时间】:2013-03-27 08:35:24
【问题描述】:

当我为 TextBox 制作 LostFocus 事件时,会添加一个 NotImplementedException()。我如何捕捉到这个异常?我的代码是:

void marks_LostFocus(object sender, EventArgs e)
{
    throw new NotImplementedException();
}

编辑

我很抱歉不清楚我想问的问题是,当我创建 lostFocus 事件时,VS 会自动添加这一行。从学术上讲。我在哪里可以捕捉到这个异常以及它的用途。为什么VS会自动添加这一行

【问题讨论】:

标签: c# winforms exception-handling


【解决方案1】:

环绕try/catch?

void marks_LostFocus(object sender, EventArgs e)
{ 
    try
    {
        throw new NotImplementedException();
    }
    catch(Exception ex)
    {
        // handle ex
    }
}

【讨论】:

    【解决方案2】:

    只有触发事件的方法才能捕获订阅者方法抛出的所有未处理的异常。您还可以使用一个备用解决方案:

    订阅Application.ThreadException 活动。

    在 Program.cs 中:

    Application.ThreadException += OnThreadException
    
    
    private static void OnThreadException(object sender, ThreadExceptionEventArgs e)
    {
        MessageBox.Show(e.Exception.ToString());
    }
    

    【讨论】:

      【解决方案3】:

      首先——你可以实现这个方法。

      但如果你想处理未处理的异常,你可以尝试使用你的AppDomainunhandled exception event 或任何其他global exception handler

      【讨论】:

      • AppDomain 事件仍然会终止应用程序
      • 我假设大多数异常将在本地处理程序中处理,只有关键异常会到达 AppDomain(仅用于日志记录)。
      【解决方案4】:

      从处理程序本身捕获此异常是荒谬的-通过调用代码管理它可能是有意义的。但是,您似乎根本不需要它。鉴于我所看到的上下文,它完全没有任何作用 - 您可以通过删除代码来防止此异常。

      您在此块中所做的是实现您自己的逻辑。也就是说,你实现它。

      【讨论】:

        猜你喜欢
        • 2018-06-06
        • 2012-12-22
        • 2016-06-19
        • 1970-01-01
        • 2017-09-09
        • 1970-01-01
        • 2014-07-15
        • 1970-01-01
        • 2011-06-30
        相关资源
        最近更新 更多