当用户点击“保存”并且列表框中没有任何内容时,我想提出错误。 我想我会像这样使用try catch块:
try
{
//when you go to save, and the list box is empty, you should get an error message
if (dataListBox.Items.Equals(null))
throw new Exception();
//i wanted to save on the form_close event, so i put the save data into a method and just call the method from this event
this.save();
}
catch (Exception err)
{
//spits out the errors if there are any
MessageBox.Show(err.Message, "List Box is empty", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
但这不适合我。它仍然保存,没有消息框出现。
答案 0 :(得分:0)
尝试添加:
if(dataListBox.Items.Count==0)
throw new Exception();
顺便说一句,尝试在这里定义自己的Exception类,例如EmptyListException,然后你就可以确定你准确捕获了你想要捕获的内容。现在,此代码将为“Save”方法中引发的异常显示相同的MessageBox。
答案 1 :(得分:0)
您需要检查:
if(dataListBox.Items.Count ==0)
throw new Exception();
答案 2 :(得分:0)
您应该使用.Count()代替。
if (dataListBox.Items.Count < 1)
throw new Exception();
答案 3 :(得分:0)
根本不要这样做。比较:
try
{
//when you go to save, and the list box is empty, you should get an error message
if (dataListBox.Items.Count != 0)
throw new Exception("Please add at least one item to the list.");
this.save();
}
catch (Exception err)
{
//spits out the errors if there are any
MessageBox.Show(err.Message, "List Box is empty", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
使用:
if (dataListBox.Items.Count != 0)
{
MessageBox.Show("Please add at least one item to the list.", "List Box is empty", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
this.save();
}
它可以更容易地发现逻辑错误。因为我们已经分离了异常和非特殊情况,我们可以看到我们没有寻找真正可能的异常。原样,如果您有一个用户正确填写列表,但由于一个真正的异常导致保存失败,您将在消息框的标题中说“列表框为空”,这将使用户感到困惑。现在这变得更加平坦,并且更容易修复该错误:
if (dataListBox.Items.Count != 0)
{
MessageBox.Show("Please add at least one item to the list.", "List Box is empty", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
try
{
this.save();
}
catch(Exception ex)
{
MessageBox.Show("Saving failed.\n Technical details:\n" + ex.Message, "Saving Failed", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}