在asp.net中返回值时出错

时间:2011-11-10 12:42:26

标签: c# asp.net

public bool ConnectToDB()
{
    SqlConnection sqlConnect = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ToString());
    try
    {
        sqlConnect.Open();
        if (sqlConnect.State == ConnectionState.Open)
        {
            return true;
        }
    }
    catch (SqlException ex)
    {
        // some code here...
    }
    finally
    {
        sqlConnect.Close();
    }
}

当我运行此代码时,它会发出错误

  

错误'DataAccess.ConnectToDB()':并非所有代码路径都返回值

8 个答案:

答案 0 :(得分:1)

你必须把所有的返回条件都放在功能中。

答案 1 :(得分:0)

public bool ConnectToDB()
{
    SqlConnection sqlConnect = new SqlConnection(ConfigurationManager.ConnectionStrings["DBConnection"].ToString());
    try
    {
        sqlConnect.Open();
        if (sqlConnect.State == ConnectionState.Open)
        {
            return true;
        }else 
return false;
    }
    catch (SqlException ex)
    {
        return false;
    }
    finally
    {
        sqlConnect.Close();
    }
}

答案 2 :(得分:0)

您的方法签名表示您返回bool(public bool ConnectToDB())。但是,只有在连接打开时才返回bool。

我认为你打算在其他情况下返回false。 如果是这样,请从catch子句中返回false。

catch (SqlException ex)
{
    // some code here...
    return false;
}

答案 3 :(得分:0)

你需要修改if条件之外的返回值,以确定在'return true'到达之前是否有异常或IF条件失败时会发生什么?您需要在else部分和catch块中使用return语句。

答案 4 :(得分:0)

当你有一个返回类型时,所有的代码路径,即try / catch块都应该返回一些东西。在这种情况下,false将是适当的值。但是,如果catch块重新抛出异常,则不需要它。

答案 5 :(得分:0)

您需要在函数末尾添加return true,并在异常块中添加return false。

答案 6 :(得分:0)

在代码中考虑是否发生异常,在catch中处理但是return true永远不会到达并且执行现在处于catch状态,然后移动到finally块。因此,您需要在catch部分中添加return false以进行编译。

答案 7 :(得分:0)

打开连接以检查数据库是否已打开似乎是多余的。事实上,有人可能会争辩说,如果数据库连接已经打开,它将抛出异常。您确实涉及异常处理,但您只需检查状态而无需打开连接:

public bool ConnectToDB() {
   return sqlConnect.State == ConnectionState.Open;
}