【问题标题】:An unhandled Exception of type 'System-stack overflow Exception' occured in mscorlib.dllmscorlib.dll 中出现“系统堆栈溢出异常”类型的未处理异常
【发布时间】:2014-09-09 06:05:55
【问题描述】:
class BaseData
{
    public string DbConnection = ConfigurationManager.ConnectionStrings["OLTPPOINTER_Connectionstring"].ConnectionString;
    public string DbConnection_Report = ConfigurationManager.ConnectionStrings["OLTPPOINTER_Connectionstring"].ConnectionString;

    protected SqlConnection OpenConnection()
    {
        **SqlConnection conn = new SqlConnection(DbConnection);**----"StackOverflow Exception was unhandled"

        try
        {
            if (conn.State != ConnectionState.Open)
            {
                conn.Open();
            }

            return conn;
        }
        catch { throw; }
    }

我使用了递归,它有时会在没有异常的情况下工作。 在某些情况下,它会抛出异常:-

   SqlConnection conn = new SqlConnection(DbConnection); 
                    or
   SqlDataAdapter adpt = new SqlDataAdapter(cmd);
   adpt.Fill(ds, "DataSet");
   CloseConnection(cmd.Connection);

递归调用是否使抛出异常。如何处理它

【问题讨论】:

    标签: sql winforms recursion c#-3.0


    【解决方案1】:

    是的,递归意味着嵌套的方法调用。太多的嵌套方法调用确实会抛出StackOverflow。并且你应该避免递归地打开多个连接。

    【讨论】:

    • 避免多个连接意味着我应该打开一次sql连接并在不关闭连接的情况下通过操作使用
    • 嗯,这取决于您在递归部分中到底在做什么。您可以选择在所有递归调用中暂时占用一个连接,还是在每个递归调用中打开/关闭连接。
    • 代码现在可以正常工作了.....每次之后我都放了thread.sleep(3000),我调用了递归函数。
    猜你喜欢
    • 2014-03-09
    • 1970-01-01
    • 2015-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多