如果一个void函数返回,我如何阻止下一个函数调用的执行?

本文关键字:何阻止 下一个 函数调用 执行 返回 一个 函数 void 如果 | 更新日期: 2023-09-27 18:14:01

我有两个不同的按钮点击调用同一函数的修改版本…

private void button1_Click(object sender, EventArgs e)
{ SendEmail(); }
private void button2_Click(object sender, EventArgs e)
{ SendRevisedEmail();}

public void SendEmail()
{
  DataManip(ref item1, ref item2);  //This is where I'd like the next 2 functions to not process if this one fails.
  UpdateDB(ref item1, ref item2);
  sendTechEmail(ref item1, ref item2);
}
public void SendRevisedEmail()
{
  DataManip(ref item1, ref item2);  //This is where I'd like the next 2 functions to not process if this one fails.
  UpdateDB2(ref item1, ref item2);
  sendRevisedTechEmail(ref item1, ref item2);
}

DataManip函数中,我让它对表单执行一些检查,并设置为抛出弹出消息并返回;如果没有得到flag1 = true

public void DataManip(ref string item1, ref string item2)
{
  bool flag1 = false;
  foreach (Control c in groupBox1.Controls)
  {
    Radiobutton rb = c as RadioButton;
    if rb != null && rb.Checked)
    {
      flag1 = true;
      break;
    }
  }
  if (flag1 == true)
  {
    //Manipulate Data here
  }
  else if (flag1 != true)
  {
    MessageBox.Show("You didn't check any of these boxes!");
    return;
  };
}

到目前为止,DataManip中的flag1检查工作正常。如果它在groupBox1中缺少一个条目,我可以验证它不处理数据更改。

问题是在SendEmail()SendRevisedEmail()函数中,它仍然处理DataManip(ref item1, ref item2)之后的其他函数的调用。

我怎么能导致一个错误踢出DataManip和防止/跳过其他两个函数调用执行?

如果一个void函数返回,我如何阻止下一个函数调用的执行?

我怎么能导致一个错误踢出DataManip和防止/跳过其他两个函数调用从执行?

你有几个选择:

  • 将方法更改为返回bool。这将允许你返回一个值是否方法成功。
  • 如果方法"failing"为真错误,则引发异常。这将允许调用代码在需要时捕获并处理异常,或者在不知道如何处理异常时弹出。

请注意,您可能需要检查代码中其他一些奇怪的地方。这是罕见的,你应该通过所有的ref。此外,在处理数据的同一方法中使用消息框类型的通知通常不是一个好主意——您可能需要考虑将值的验证/提取与数据的操作分开。