我的Windows窗体里面有一些错误的代码(无论错误是什么,它们都是故意检查引发的异常)。
请记住,我没有使用任何try-catch
,不在表单内部,也不在外部。我只是期望调试器抛出异常并停止运行。
当我使用ShowDialog()
显示表单时,抛出异常没有问题。
当我使用Show()
显示表单时,不会引发任何异常。在代码执行期间发生错误,代码中断运行应该引发异常的地方,但是表单保持活动和功能,接受点击并运行所有事件。调试器不应抛出表单???
这是正常的??? Show()
方法真的意味着不要抛出咒语???
或者是来自Autocad Plug-in中的表格的一些奇怪的错误
一些代码(我觉得它没用,但它有用)
public void ShowMyForm(MyForm MyFormInst)
{ MyFormInst.Show(); } //here, the form doesn't raise exceptions when I click button1.
public void ShowMyFormModal(MyForm MyFormInst)
{ MyFormInst.ShowDialog(); } //here, the form raises exceptions when I click button1.
class MyForm : Form
{
//initialize and blablabla
private void button1_Click(object sender, EventArgs e)
{
double[] Arrr = new double[] {1, 2, 3};
double Numb = Arrr[4]; //yes, did this on purpose to force exceptions.
}
}
答案 0 :(得分:1)
ShowDialog()停止执行调用类/表单。 Show()没有。我希望你在调用类/表单中有一个catch-block,它处理了Exception,因此没有显示
示例:
form1_click() {
try {
Form2 frm2=new Form2();
frm2.Show();
} catch {
// Do Nothing
}
}
因为Form1中的Catch
而没有显示任何内容form1_click() {
try {
Form2 frm2=new Form2();
frm2.ShowDialog();
} catch {
// Do Nothing
}
}
如果
中没有异常处理,将在Form2中显示异常