c# - 并非所有代码路径都返回一个值 sql

标签 c# sql-server winforms error-handling path

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/

相关文章:

c# - 关闭除我的主表单之外的所有表单

c# - MS 测试断言检查

c# - 如何通过 C# 使用 CryptoAPI?

c# 套接字处理多个客户端

mysql - 从 SQL Server 到 MYSQL 插入文本字段失败

wpf - 错误 XLS0502 'WindowsFormsHost' 类型不支持直接内容

c# - 两种方式绑定(bind) C#。自制类的文本框和对象

c# - 强制 EventProcessorHost 重新传递失败的 Azure 事件中心 eventData 到 IEventProcessor.ProcessEvents 方法

sql - 如果 SQL Server 2008 中存在子级,则防止删除或更新父级

sql - 将临时表传递给另一个存储过程