try
{
   CMD.Connection.Open();
   CMD.ExecuteNonQuery();
   myconn.Close();


}
catch
{
Response.Write("<script>history.back();alert('操作不当请与软件部联系!');</script>");
Response.End();
}
这样可以吗?

解决方案 »

  1.   

    当然不可以了,这是针对所有异常,我要求的是针对特例的异常,比如说我抓到index异常,我就抛出index相对应的异常;如果是溢出就会针对溢出抛出相对应的溢出异常,也就说我要针对不同的Sql Server的异常抛出相应的异常(我以前在什么地方看到过),不知道大家可否帮我?
      

  2.   

    catch ( System.Data.SqlClient.SqlException )
      

  3.   

    这样没法弄的,catch中存在很多异常,这样会死人的,你可以做一个异常页面,只要进入catch就定位到异常页面,如果比较少,倒是可以逐个筛选,msdn商全有
      

  4.   

    可以逐渐筛选,不过我也觉得会死人的。其实让用户知道出错了,就可以了,至于你,可以messagebox.show看看,就知道什么错误了。让用户知道那么多干什么!没有意义!
      

  5.   

    try
    {
       CMD.Connection.Open();
       CMD.ExecuteNonQuery();
       myconn.Close();


    }
    catch(SqlException ex)
    {
      switch(ex.Errors[0].SQLState)
         "XXXX":
            this.Page.RegisterStartupScript("ErrorMessage","<SCRIPT>alert('messgee'))</SCRIPT>");
        ......
       default:
         this.Page.RegisterStartupScript("ErrorMessage","<script>alert('操作不当请与软件部联系!');</script>");
    }
      

  6.   

    public int Create(string emailAddress,
    byte[] password,
    string firstName,
    string lastName,
    string address1,
    string address2,
    string city,
    string state,
    string zipCode,
    string homePhone,
    string country)
    {
    int rowsAffected;
    SqlParameter[] parameters={
      new SqlParameter("@EmailAddRess",SqlDbType.VarChar,255),
      new SqlParameter("@Password", SqlDbType.Binary, 20),
      new SqlParameter("@FirstName", SqlDbType.VarChar, 30),
      new SqlParameter("@LastName", SqlDbType.VarChar, 50),
      new SqlParameter("@Address1", SqlDbType.VarChar, 80),
      new SqlParameter("@Address2", SqlDbType.VarChar, 80),
      new SqlParameter("@City", SqlDbType.VarChar, 40),
      new SqlParameter("@State", SqlDbType.VarChar, 2),  
      new SqlParameter("@ZipCode", SqlDbType.VarChar, 10),
      new SqlParameter("@HomePhone", SqlDbType.VarChar, 14),
      new SqlParameter("@Country", SqlDbType.VarChar, 50),
      new SqlParameter("@UserID", SqlDbType.Int, 4)



    } ;
    parameters[0].Value=emailAddress;
    parameters[1].Value = password;
    parameters[2].Value = firstName;
    parameters[3].Value = lastName;
    parameters[4].Value = address1;
    parameters[5].Value = address2;
    parameters[6].Value = city;
    parameters[7].Value = state;
    parameters[8].Value = zipCode;
    parameters[9].Value = homePhone;
    parameters[10].Value = country;
    parameters[11].Direction=ParameterDirection.Output;
    try
    {
    RunProcedure("sp_accounts_CreateUser",parameters,out rowsAffected);
    }
    catch(SqlException e)
    {
    if (e.Number == 2601) 
    {
    return (int)WebModules.Accounts.ProcResultCodes.AccountAlreadyOnFile;
    }
    else 
    {
    throw new AppException("在执行存储过程Accounts_CreateUser时发生错误",e );
    }
    } return (int)parameters[11].Value;

    }这里面的e.Number == 2601就是捕获的sql 异常号 也即是你所说的
    "用户名已经存在,请用别的用户名注册".错误 对应的
    服务器: 消息 2627,级别 14,状态 1,行 1
    违反了 PRIMARY KEY 约束 'PK_HR_Act'。不能在对象 'HR_Act' 中插入重复键。
    语句已终止。
    这个是Sql Server 抓到的异常
    其他的可以类推 在sql server 查好错误好!再在。net中对应处理
      

  7.   

    try
    {
    感觉有错的地方
    }catch(Excrption a)
    {
     MessageBox.Shoe(a.Message);
    }
    试试吧 我也不知道行不行~!
    但是我up
      

  8.   

    webserv2(GIS)(CAU) :你答对了,我要的就是这个!!给分!!!分不多,重在参与和技术交流,同时也谢谢大家!!!