C#错误 - 并非所有代码路径返回值
问题描述:
我在方法getdatatoTextbox
中收到错误“不是所有代码路径都返回值”。C#错误 - 并非所有代码路径返回值
请帮我解决这个问题。
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
返回类型是无效的。也绝不会吞下异常,它的不良做法,当出现问题时,您稍后再回过头来问问原因。
另一方面,您应该将所有的一次性用品包装在using
区块中。如果你的查询失败,你的Db连接将保持打开你的代码现在的状态,我知道你已经在finally中配置了,但是它不会编译,因为你在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;
}
}
返回null或抛出异常 – 0x4f3759df
你赶上{}返回任何 – Gusman
看看在你的代码的所有路径。他们所有人都返回一个值,否则抛出异常?如果你碰到catch block会发生什么?你想要发生什么?调用此方法的人想要发生什么? –