试试并捕获异常的麻烦

时间:2018-04-28 16:30:59

标签: c#

在学校项目上,我发现了一个有趣的代码,可以为c#here创建一个输入框。我用它在数据库中发出查找请求。但我遇到了问题。当我用取消或关闭按钮关闭消息框时,它执行catch,而catch用于连接问题。我怎么避免这个?

编辑:在一些帮助下,我确定了异常的原因。 输入仍为空并导致异常。我如何检查消息框是否已关闭,以便在这种情况下我给出一个值?

以下是“查找”选项的代码:

private void TEACHER_BTN_find_Click(object sender, EventArgs e)
{
    string input = "";
    ShowInputDialog(ref input);
    try
    {
        cnx.Open();
        string req1 = "select nom_prof, pre_prof, ville_prof from Professeur where mat_prof ="+input;
        cmd.CommandText = req1;
        OleDbDataReader selection = cmd.ExecuteReader();
        if (selection.Read())
        {
            TEACHER_TXB_reg.Text = input;
            TEACHER_TXB_name.Text = selection[0].ToString();
            TEACHER_TXB_lastn.Text = selection[1].ToString();
            TEACHER_TXB_city.Text = selection[2].ToString();
        }
        else
            MessageBox.Show("Matricule introuvable.");
        cnx.Close();
    }
    catch
    {
        MessageBox.Show("Erreur de connexion.");
    }
}

1 个答案:

答案 0 :(得分:1)

您可以拥有多个catch子句来捕获特定或一般异常。要抓住一般例外,您可以

catch (Exception ex)
{
  //handle general exception here.
  MessageBox.Show(ex.Message);
}

要捕获特定异常,在您的情况下,数据库异常,您可以

catch (DbException exDb)
{
  //handle your db exception here. It will help you debug as well. You can 
  //log them somewhere for future reference.
}

希望有所帮助:)