C# winfrom自定义类的错误捕获

唐诗三百首 2016-12-29 05:36:58
VS2013, winfrom程序,
我在代码中故意让数组下标越界: int[] x=new int[2]; x[100]=99;
执行时可以报错(VS定位到此行).

但new一个自定义类成对象后, 在类的内部方法也写一个数组下标越界, 则VS不会报错. 程序继续往下执行...
不知为何?

类里没有用try catch,

测试在类里用try catch, 可以捕获到错误并返回. 但我想让VS执行时定位到此行错误. 应该怎么写?
...全文
512 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
Forty2 2017-01-12
  • 打赏
  • 举报
回复
引用 15 楼 ap0405140 的回复:
在Form1_Load里不报错,你试试?
这是一个已知的微软问题。 具体的说,托管代码创建一个具体的FrmMain Window时 ,需要调用操作系统的本地代码,而本地代码反过来调用frmMain_Load。由于某些微软声称的特殊原因,frmMain_Load里的异常无法穿透本地代码,再回到托管代码中。最后的结果就是异常被吃掉了。 你有兴趣的话,可以搜索”OnLoad exception disappeared“,可能可以看到微软的DotNet团队和操作系统团队就此问题互相指责的故事。 注一:具体原文在http://bbs.csdn.net/topics/391936002的4楼。 注二:可能只发生在64位操作系统。 注三:不清楚是否有最新的补丁可解决该问题。
唐诗三百首 2017-01-11
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
你确定代码 xx = 1 / yy; 运行时不崩溃?
在Form1_Load里不报错,你试试?
crystal_lz 2016-12-30
  • 打赏
  • 举报
回复
form_load 中的异常 如果没有try catch是捕获不到的 直接跳出load 一直都是这样的 不知道为什么
zj_zwl 2016-12-30
  • 打赏
  • 举报
回复
引用 4 楼 ap0405140 的回复:
新建一个winform工程, 在Form1_Load里写如下代码,执行无报错,

            this.Text = "111";

            int xx;
            int yy;
            yy = 0;
            xx = 1 / yy;

            int[] x = new int[2];
            x[44] = 445;

            this.Text = "222";
不报错?不可能吧!
APei9527 2016-12-30
  • 打赏
  • 举报
回复
引用 12 楼 closurer 的回复:
如果不会抛出异常,那肯定是调用栈的上一层捕获了啊。
赞同。
xinbada1985 2016-12-30
  • 打赏
  • 举报
回复
这个类本身不报错,是不可能的!只有一种可能就是调用你这个自定义类的地方应该有try catch,另外你可以把异常设置,给设置上,这样就不会受到try catch的影响,在哪行报错,就会再哪行停下来!
闭包客 2016-12-30
  • 打赏
  • 举报
回复
如果不会抛出异常,那肯定是调用栈的上一层捕获了啊。
guanyinsishengzi 2016-12-30
  • 打赏
  • 举报
回复
form load中不会报异常 会自动跳过。
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
你确定代码 xx = 1 / yy; 运行时不崩溃?
确定崩溃了
  • 打赏
  • 举报
回复
好神奇,有错误,没try catch还能运行?
  • 打赏
  • 举报
回复
你确定代码 xx = 1 / yy; 运行时不崩溃?
唐诗三百首 2016-12-29
  • 打赏
  • 举报
回复
新建一个winform工程, 在Form1_Load里写如下代码,执行无报错,

            this.Text = "111";

            int xx;
            int yy;
            yy = 0;
            xx = 1 / yy;

            int[] x = new int[2];
            x[44] = 445;

            this.Text = "222";
唐诗三百首 2016-12-29
  • 打赏
  • 举报
回复
我想让VS2013执行时定位到此行错误. 应该办?
闭包客 2016-12-29
  • 打赏
  • 举报
回复
throw new Exception("叫你沉默!!这回出错了吧!!"); 这样好伐?
闭包客 2016-12-29
  • 打赏
  • 举报
回复
这……好像不可能的啊…… MVP 带我装X带我飞……

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧