【发布时间】:2013-09-07 04:48:44
【问题描述】:
我无法弄清楚为什么我不断收到编译错误:“并非所有代码路径都返回值”。我正在编写一个简单的类方法,如果帐户可用,则返回 true;如果帐户不可用或为空/空,则返回 false。该方法的代码如下:
public static bool AccountAvailable(int AccountId)
{
try
{
bool accountavailable;
string queryTransaction = "Select Count(AccountID) FROM Accounts WHERE AccountID = " + AccountId.ToString() + " AND AccountUsed = 0";
//grab a connection to the database
Database database = DatabaseFactory.CreateDatabase();
//create an instance of the command
DbCommand command = database.GetSqlStringCommand(queryTransaction);
object dataobject = command.ExecuteScalar();
if (dataobject == null || string.IsNullOrEmpty(Convert.ToString(dataobject)))
{
accountavailable = false;
}
else if (Convert.ToInt32(dataobject) == 0)
{
accountavailable = false;
}
else if (Convert.ToInt32(dataobject) > 0)
{
accountavailable = true;
}
else
{
accountavailable = true;
}
return accountavailable;
}
catch
{
}
}
对此的任何帮助或建议将不胜感激。谢谢!!
【问题讨论】:
-
解释当
try块内抛出异常时您认为会发生什么。还要解释为什么你首先有一个 try 块。像你在这里所做的那样构建一个 try-catch 是一种“最糟糕的做法”,所以如果你解释你这样做的原因,我们可以让你摆脱任何导致你编写这个糟糕代码的错误想法。跨度> -
您不应该捕获所有异常然后什么都不做。如果你有问题,你永远不会发现哪里出了问题。如果您遇到无法在代码中处理的问题,那么您需要了解它,这意味着至少 非常,您应该记录问题,而且很有可能没有你应该让异常冒泡,因为你不能有意义所以如果你遇到意外的异常会问你什么。
-
哦,你不应该通过连接字符串来生成查询,这会让你对 SQL 注入开放。
-
@Servy:很好的建议,但要迂腐,在这种情况下很难用 int 注入任何有用的东西。
-
@spender 没错,我在评论后注意到了这一点,但认为它仍然值得离开。
标签: c# asp.net methods compiler-errors boolean