微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 无法捕获Winforms中的未处理异常

我正在尝试捕获C# Windows窗体应用程序中的所有未经处理的异常.我已将以下代码添加到Program.cs文件中,但未捕获异常,我得到NullReferenceException等异常.
我究竟做错了什么?

static void Main()
{ 
    System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
    System.Windows.Forms.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(OnGuiUnhandedException);
    AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
    var form = new MainForm();
    form.ShowDialog();
}

private static void HandleUnhandledException(Object o)
{
    // Todo: Log it!
    Exception e = o as Exception;
    if (e != null)
    {
    }
}

private static void OnUnhandledException(Object sender,UnhandledExceptionEventArgs e)
{
    HandleUnhandledException(e.ExceptionObject);
}

private static void OnGuiUnhandedException(object sender,System.Threading.ThreadExceptionEventArgs e)
{
    HandleUnhandledException(e.Exception);
}

编辑:我能够在Visual Studio外部运行程序时捕获异常,但是当从visual studio进行调试时我无法捕获Exception.我知道调试是为了删除错误.我应该在构建模式下运行程序来捕获异常?

解决方法

尝试在VS中禁用异常捕获,因为它似乎在它到达处理程序之前捕获异常.

调试>例外……>取消选中用户未处理的公共语言运行时异常.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐