Error :'WinWithStudentDatabase.Broker.FillComboBox()': not all code paths return a value.
我知道该错误的含义,但无法弄清楚为什么它不起作用:/...这是我的代码:
public List<Person> FillComboBox()
{
List<Person> personsList = new List<Person>();
try
{
string sql = "SELECT * FROM Tperson";
cmd = new SqlCommand(sql, connection);
connection.Open();
System.Data.SqlClient.SqlDataReader reader = cmd.ExecuteReader();
while (reader.Read() != null)
{
Person p = new Person();
p.Id = Convert.ToInt32(reader["ID"].ToString());
p.FirstName = reader["FirstName"].ToString();
p.LastName = reader["LastName"].ToString();
personsList.Add(p);
}
return personsList;
}
catch (Exception eX)
{
MessageBox.Show(eX.Message);
}
finally
{
if (connection != null)
{
connection.Close();
}
}
}
有什么建议吗?我只是想从我的数据库中读取数据并填充组合框,仅此而已..
最佳答案
您已声明函数返回 List<Person>
但是 catch block 没有返回任何东西就退出了
catch (Exception eX)
{
MessageBox.Show(eX.Message);
return null;
// or return an empty list if more appropriate
// return new List<Person>();
}
编译器看到您编写了一个 catch block ,这意味着您希望在此处处理异常。但是当 catch block 退出时应该有一个返回值。
很难说在这些情况下返回的正确方法是什么。我个人更喜欢返回一个空对象并在调用代码中对此进行测试。 (我避免返回在方法开始时声明的最终部分填充的列表)
关于c# - 并非所有代码路径都返回一个值 sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22113679/