不是所有的代码路径都返回一个值,而我返回一些东西

本文关键字:返回 一个 代码 路径 | 更新日期: 2023-09-27 18:18:31

我在下面返回一个昵称,但是Visual Studio一直给我错误:不是所有的代码路径都返回值。

我做错了什么?我返回一个昵称…谁能进一步帮助我?在Google上找不到解决办法…

    public string GetEigenaarBlog(int gebruikerid)
    {
        try
        {
            connection.Open();
            string sql = "SELECT NICKNAME FROM GEBRUIKER WHERE GEBRUIKERID = :GEBRUIKERID";
            command = new OracleCommand(sql, connection);
            command.Parameters.Add(new OracleParameter(":GEBRUIKERID", gebruikerid));
            string nickname = Convert.ToString(command.ExecuteReader());
            return nickname;
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
        finally
        {
            connection.Close();
        }
    }

不是所有的代码路径都返回一个值,而我返回一些东西

在异常处理位中,没有返回任何内容。

public string GetEigenaarBlog(int gebruikerid)
{
    try
    {
        connection.Open();
        string sql = "SELECT NICKNAME FROM GEBRUIKER WHERE GEBRUIKERID = :GEBRUIKERID";
        command = new OracleCommand(sql, connection);
        command.Parameters.Add(new OracleParameter(":GEBRUIKERID", gebruikerid));
        string nickname = Convert.ToString(command.ExecuteReader());
        return nickname;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
        return null; 
        //if you want to let the code know too put "throw;" here instead.
    }
    finally
    {
        connection.Close();
    }
}

您已经声明了字符串类型的方法,但是如果您将在以下其中一行中得到异常:

connection.Open();
string sql = "SELECT NICKNAME FROM GEBRUIKER WHERE GEBRUIKERID = :GEBRUIKERID";
command = new OracleCommand(sql, connection);
command.Parameters.Add(new OracleParameter(":GEBRUIKERID", gebruikerid));
string nickname = Convert.ToString(command.ExecuteReader());

你不会返回任何东西,因为会有跳转到catch子句,而你没有返回语句。

最佳实践(IMO)是将返回语句放在try..catch..finally块之外,并在方法的开头声明返回的变量(并用一些默认值初始化它)

试试:

 public string GetEigenaarBlog(int gebruikerid)
            {
          string nickname = null;
                try
                {
                    connection.Open();
                    string sql = "SELECT NICKNAME FROM GEBRUIKER WHERE GEBRUIKERID = :GEBRUIKERID";
                    command = new OracleCommand(sql, connection);
                    command.Parameters.Add(new OracleParameter(":GEBRUIKERID", gebruikerid));
                    nickname = Convert.ToString(command.ExecuteReader());           
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
                finally
                {
                    connection.Close();                   
                }
     return nickname;
            }
相关文章: