System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(SqlHelper.connectionString);
        conn.Open();
        System.Data.SqlClient.SqlTransaction trans = conn.BeginTransaction();
       try
        {
             // 删除操作
              ...
            // 更新操作
              ... 
           trans.Commit();
        }
        catch
        {
            trans.Rollback();
            page.ClientScript.RegisterStartupScript(typeof(Page),"<script>alert('操作失败!')</script>");
        }
        finally
        {
            if (conn.State == System.Data.ConnectionState.Open)
                conn.Close();
        }
     page.ClientScript.RegisterStartupScript(typeof(Page),"<script>alert('操作成功!')</script>");
     当发生异常时,page.ClientScript.RegisterStartupScript(typeof(Page),"<script>alert('操作成功!')</script>");
这条语句也会被执行了!!?要怎么写?

解决方案 »

  1.   

    page.ClientScript.RegisterStartupScript(typeof(Page)," <script>alert('操作成功!') </script>"); 
    放到try里
      

  2.   

    page.ClientScript.RegisterStartupScript(typeof(Page)," <script>alert('操作成功!') </script>"); 
    这句写到这里try 
            { 
                // 删除操作 
                  ... 
                // 更新操作 
                  ... 
              trans.Commit(); 
    page.ClientScript.RegisterStartupScript(typeof(Page)," <script>alert('操作成功!') </script>");         } 
      

  3.   

    语句块顺序执行,你发到最后面不光成功语法都执行了,所以要放到try语句中。 trans.Commit(); 
    page.ClientScript.RegisterStartupScript(typeof(Page)," <script>alert('操作成功!') </script>"); 
      

  4.   

    page.ClientScript.RegisterStartupScript(typeof(Page)," <script>alert('操作成功!') </script>"); 不要放在 try catch 后 或 finally  ,因为这样不管是否出现异常都会执行的你想不出异常执行  需要放在 try 中