C# C错误-并非所有代码路径返回值

C# C错误-并非所有代码路径返回值,c#,C#,我得到一个错误,不是所有的代码路径都在getdatatoTextbox方法中返回一个值 请帮我解决这个问题 private DataTable getdatatoTextbox(int RegistrationId) { try { SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=DotNetFunda;User id=sa;Password=sqluser");

我得到一个错误,不是所有的代码路径都在getdatatoTextbox方法中返回一个值

请帮我解决这个问题

private DataTable getdatatoTextbox(int RegistrationId)
{
    try
    {
        SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=DotNetFunda;User id=sa;Password=sqluser");
        con.Open();
        SqlCommand sqlcmd = new SqlCommand("Getdatatotextbox", con);
        sqlcmd.CommandType = CommandType.StoredProcedure;
        sqlcmd.Parameters.AddWithValue("@RegistrationId", SqlDbType.Int).Value = RegistrationId;
        DataTable dtdatanew = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter(sqlcmd);
        da.Fill(dtdatanew);
        con.Close();
        return dtdatanew;
    }
    catch (Exception ex)
    {
    }
    finally
    {
        con.Dispose();
    }
}

如果发生异常,则不会返回任何内容。如果方法中有非void返回类型,则返回内容无效。此外,永远不要接受例外,这是一种糟糕的做法,当出现问题时,你会回来问为什么

另一方面,你应该用木块把你所有的一次性用品包起来。如果您的查询失败,您的数据库连接将保持打开状态,就像您的代码现在一样,我知道您在finally中有dispose,但它甚至不会编译,因为您在try块中定义了它

这将解决问题,并在发生意外情况时为您提供一个异常。您可以在方法之外处理它,或者让它冒泡到原始调用方,然后执行某些操作

private DataTable getdatatoTextbox(int RegistrationId)
{
    using(SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=DotNetFunda;User id=sa;Password=sqluser"))
    using(SqlCommand sqlcmd = new SqlCommand("Getdatatotextbox", con))
    using(SqlDataAdapter da = new SqlDataAdapter(sqlcmd))
    {
        con.Open();
        sqlcmd.CommandType = CommandType.StoredProcedure;
        sqlcmd.Parameters.AddWithValue("@RegistrationId", SqlDbType.Int).Value = RegistrationId;
        DataTable dtdatanew = new DataTable();
        da.Fill(dtdatanew);
        return dtdatanew;
    }
}

return null或throw exception您的catch{}返回Nothing查看代码中的所有路径。它们是否都返回值或抛出异常?如果你撞到了挡块会发生什么?你想发生什么?调用此方法的人希望发生什么?也要去掉最后一节中的代码,重构Sql对象并使用{}将它们包装在为了利用自动处理的优势,并且您的错误声明它需要一个返回类型,所以要么在外部声明datatable,要么尝试在最坏的情况下搜索错误消息。您需要在catch块中输入一个返回值