c# – 为什么Form_Load事件已经捕获了所有异常?

c# – 为什么Form_Load事件已经捕获了所有异常?,第1张

概述我已将初始化代码放在表单加载中,因为将它留在构造函数中并不是一个好主意,因为设计器可能会崩溃. 问题是我刚刚意识到表单加载事件中的任何异常都将在内部捕获! 为什么?我应该如何克服这个问题? private void Form1_Load(object sender, EventArgs e) { //This exception will be catch internal 我已将初始化代码放在表单加载中,因为将它留在构造函数中并不是一个好主意,因为设计器可能会崩溃.

问题是我刚刚意识到表单加载事件中的任何异常都将在内部捕获!

为什么?我应该如何克服这个问题?

private voID Form1_Load(object sender,EventArgs e)    {        //This exception will be catch internally (I don't kNow why and where)        throw new Exception("test");    }
解决方法 这是一个错误,在这里解释:

消失的OnLoad异常 – x64中的用户模式回调异常的情况

http://blog.paulbetts.org/index.php/2010/07/20/the-case-of-the-disappearing-onload-exception-user-mode-callback-exceptions-in-x64/

VS团队回答:
从这里:https://connect.microsoft.com/VisualStudio/feedback/details/357311/silent-exceptions-on-x64-development-machines

发布者:微软@ 22/04/2010 17:12
你好,

此错误已关闭为“外部”,因为此行为是由x64版本的windows处理异常引起的.当用户模式异常穿过内核转换时,x64版本的windows不允许异常传播.因此,附加的调试器不知道发生异常的事实导致调试器未能在未处理的异常上中断.

不幸的是,Visual Studio团队无法解决这个问题,这是 *** 作系统设计的结果.有关此问题的所有反馈都应提交给windows团队;但windows团队认为这是“正确的” *** 作系统设计,并认为x86行为“不正确”.

最好的祝福,
Visual Studio调试器

我使用的解决方案:
我把表单加载中的代码放到构造函数中,然后检查应用程序是否在设计器中运行

protected static bool IsInDesigner    {        get { return (Assembly.GetEntryAssembly() == null); }    }     if (!MainForm.IsInDesigner)          LoadControl();
总结

以上是内存溢出为你收集整理的c# – 为什么Form_Load事件已经捕获了所有异常?全部内容,希望文章能够帮你解决c# – 为什么Form_Load事件已经捕获了所有异常?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1233891.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存