为什么实例方法Controls.Find崩溃而没有异常?

时间:2016-05-23 10:10:32

标签: c# winforms exception

我有一个表格

的代码

表单为空。

没有按钮,因此没有名为b1的按钮。

这段代码崩溃了,但奇怪的是它没有例外。

我知道它崩溃了,因为它没有到达MessageBox.Show行。

private void Form1_Load(object sender, EventArgs e)  {

  Control[] controlsreturned = this.Controls.Find("b1", false);
  MessageBox.Show(controlsreturned.Length.ToString()); //0
  controlsreturned[0].ToString();  // intentional crash to demonstrate issue
  MessageBox.Show("reached here?"); // is not reached! but no exception thrown!

}

作为测试,可以尝试添加Button b1 = new Button(); b1.Name = "b1"; this.Controls.Add(b1);然后它不会崩溃。

但我的观点是,为什么当它崩溃时它不会抛出异常,它只会非常安静地崩溃。程序继续运行..没有抛出异常。对于更大的程序来说,这当然是一个稍大的不便,因为它使调试工作更加繁琐。但我用一个小例子来证明。

0 个答案:

没有答案