【问题标题】:ASP.NET logic / connection pooling and error handingASP.NET 逻辑/连接池和错误处理
【发布时间】:2010-09-22 07:31:55
【问题描述】:

我刚刚上传了我的第一个 ASP.NET(作为我学习 vb.net 的一部分),并且在连接池(当您的网站有超过 1 个用户时会发生有趣的事情)现在全部排序通过更好地使用try catch语句(这个想法是学习)但是我想知道这是否是最好的/最终的方法,现在如果尝试失败,那么页面上的很多细节都没有放置/更新,所以如果你正在做一些数据库工作并且尝试失败,你是否重新加载页面......重定向到自我并希望它下次工作......或者只是通知用户有错误,他们应该再试一次?

谢谢

【问题讨论】:

    标签: asp.net error-handling logic


    【解决方案1】:

    您应该对所有实现IDisposable 的对象(例如连接和读取器)明确使用“using”语句。 'using' 语句在幕后被转换为 try-finally 块,并确保即使发生错误也会调用 Dispose()。

    这里是一个代码 sn-p 示例:

    using (SqlConnection conn = new SqlConnection(this.connectionString))
    {
        using (SqlCommand cmd = conn.CreateCommand())
        {
            cmd.CommandText = "LoadFromRepository";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.AddWithValue("@ID", fileID);
    
            conn.Open();
            using (SqlDataReader rdr =
                       cmd.ExecuteReader(CommandBehavior.CloseConnection))
            {
                while (rdr.Read())
                {
                    // do something with read data
                }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      如果发生意外错误,请将用户重定向到错误页面,因为它可能下次也会发生。

      您是否查看过数据库连接和读取器的“使用”语句?

      【讨论】:

        【解决方案3】:

        我永远不会自动重定向并希望它下次能正常工作(你可能会陷入无限循环)。

        通知用户和可选的链接以再次尝试。

        您甚至可能想分析您的异常以查看是否再次尝试会有所帮助。有些异常确实是bug,再试一次也无济于事。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-11
          • 2017-10-26
          • 1970-01-01
          • 2012-05-01
          • 1970-01-01
          • 2018-10-18
          相关资源
          最近更新 更多