不是所有的代码路径都返回一个值,而我返回一些东西
本文关键字:返回 一个 代码 路径 | 更新日期: 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;
}