繁体   English   中英

异常消息未显示

[英]Exception Message not showing

我的checked==false消息和异常不起作用。

这是代码:

 private void Submit()
    {
        if (CheckBox1.Checked == true)
        {
            try
            {
                con.Open();
                cmd = new SqlCommand(@"INSERT INTO orders3
                            (order_custname,order_productname
                            ,order_address,order_tel#,order_cel#
                            ,order_cp,order_delivery,order_terms
                            ,order_file,order_qty,order_unit
                            ,order_jobdesc,order_verified1)
                            VALUES
                            (@custname,@productname
                            ,@address,@tel#,@cel#
                            ,@cp,@delivery,@terms
                            ,@file,@qty,@unit
                            ,@jdesc,@verified1)
                            ", con);

                cmd.Parameters.AddWithValue("@custname", lblCustname.Text);
                cmd.Parameters.AddWithValue("@productname", DropDownList1.SelectedItem.Value.ToString());

                cmd.Parameters.AddWithValue("@address", txtAddress.Text);
                cmd.Parameters.AddWithValue("@tel#", txtTel.Text);
                cmd.Parameters.AddWithValue("@cel#", txtCel.Text);

                cmd.Parameters.AddWithValue("@cp", txtcp.Text);
                cmd.Parameters.AddWithValue("@delivery", txtDelAr.Text);
                cmd.Parameters.AddWithValue("@terms", txtTerms.Text);

                cmd.Parameters.AddWithValue("@file", lblFile.Text);
                cmd.Parameters.AddWithValue("@qty", txtQty.Text);
                cmd.Parameters.AddWithValue("@unit", txtUnit.Text);

                cmd.Parameters.AddWithValue("@jdesc", txtJobDesc.Text);
                cmd.Parameters.AddWithValue("@verified1", "yes");

                string script1 = "alert(\"Your order has been submitted.\");";
                ScriptManager.RegisterStartupScript(this, GetType(),
                    "ServerControlScript", script1, true);
            }
            catch
            {

                cmd.ExecuteNonQuery();
                con.Close();
                string script = "alert(\"Please recheck your form.\");";
                ScriptManager.RegisterStartupScript(this, GetType(),
                    "ServerControlScript", script, true);
            }

            if (CheckBox1.Checked == false)
            {

                string script2 = "alert(\"Please Agree to our terms.\");";
                ScriptManager.RegisterStartupScript(this, GetType(),
                    "ServerControlScript", script2, true);

            }
        }
    }

每当复选框为true时,我都可以提交文件。 但是问题是,每当我将文本框留空时,我也试图获取异常。 每当checkedbox == false不会发送时,我尝试的函数的第一种方法就起作用。 这次使用我的新班级,当checkedbox == false messagebox不能与catch消息一起使用。

edit1,所以我的checkboxbox == false消息现在起作用了。我唯一的问题是异常

你的检查,看是否checked属性为false是的范围之内if语句时checked是真的。

因此,它永远无法达到。 移开。

private void Submit()
    {
        if (CheckBox1.Checked == true)
        {
            try
            {
               //some stuff
            }
            catch
            {
               //Some other stuff
            }


        }
        if (CheckBox1.Checked == false)
        {
                string script2 = "alert(\"Please Agree to our terms.\");";
                ScriptManager.RegisterStartupScript(this, GetType(),
                    "ServerControlScript", script2, true);
        }
    }

或者更好的是,用else代替它。

首先,我不会在catch语句中执行查询。 另外,如果您想查看发生了什么错误,则需要使用以下类似内容。

try
{
    // sql code
}
catch(Exception e)
{
    Console.WriteLine(e.Message);
}
finally
{
    con.close();
}

假设您不想使用using语句,我还添加了一个finally块来关闭连接。

您可能还需要考虑将sql执行代码放在不同的函数或处理数据库操作的完全不同的类中。

从您的代码片段中可以看出,有两件事。

  1. 仅在代码块从try块内部抛出错误时才执行catch。 因此,如@RenéVogt所建议,您必须将

      cmd.ExecuteNonQuery(); con.Close(); 

在您的try块中,将catch块设置为“ catch(SqlException sqex)”,然后将异常对象用于确切的消息。 2.然后,如果阻止,则删除“ CheckBox1.Checked == false”,如果阻止,则将其放入邮件的其他部分。

并测试一下。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM