异常消息未显示

时间:2016-05-19 05:45:05

标签: c# asp.net

我的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);

            }
        }
    }

每当复选框为真时,我都可以提交该文件。 但问题是,每当我将文本框留空时,我也会尝试获取异常。我尝试的第一种方法只有在它不发送的checkedbox == false时才起作用。这次checkedbox == false消息框与捕获消息一起无法使用我的新课程。

EDIT1 所以我的checkedbox == false消息nows functions.my只有问题是异常

3 个答案:

答案 0 :(得分:1)

检查以查看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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

我从你的代码片段中看到了两件事。那个

  1. 只有当代码块从try块中抛出错误时才会执行catch。所以@RenéVogt建议你必须把

            cmd.ExecuteNonQuery();
    
            con.Close();
    
  2. 在try块中,并将catch块设置为“catch(SqlException sqex)”并使用异常对象来获取确切的消息。 2.然后删除“CheckBox1.Checked == false”if block并将其作为邮件的else部分用于阻止。

    并测试它。