首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调试登录代码

调试登录代码
EN

Stack Overflow用户
提问于 2013-03-16 14:23:01
回答 5查看 79关注 0票数 0

我有一些登录功能的代码。我不能让返回语句在try语句中被识别,这似乎是放置它的唯一逻辑位置。其中,return语句当前允许用户在密码不正确的情况下登录。如果我把return语句放在其他地方,我会收到错误“不是所有的代码路径都返回值”。

代码语言:javascript
运行
复制
    public static User selectUser(string userName, string password)
    {
       // code to validate user
        try
        {
                if (isUserValid)
                {
                    MessageBox.Show("Login successful!");
                }
                else
                {
                    MessageBox.Show("Login failed");
                }
            }
        }
        catch (Exception e)
        {
             MessageBox.Show(e.ToString());
        }
        return aUser;
    }
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-16 14:29:30

您应该只在成功的场景中返回user对象,否则返回null。为了确定用户是否已经过身份验证,在使用selectUser方法时,检查user对象与null

代码语言:javascript
运行
复制
User aUser = null;
try {
            while (dbReader.Read())
            {
                if (dbReader.HasRows)
                {
                    MessageBox.Show("Login successful!");
                    aUser = new User();
                }
                else
                {
                    MessageBox.Show("Login failed");
                }
            }
        }

catch (Exception e) {
                        MessageBox.Show(e.ToString());
                    }
finally {
          return aUser;
}
票数 3
EN

Stack Overflow用户

发布于 2013-03-16 14:41:51

在解释你得到的错误代码时,MSDN有非常好的错误例子-- CS0161

您的示例有多个“代码路径”--即根据if/try语句中的条件执行的命令序列。

以下是主要的可能路径:

  1. 用户有效,无异常: try块,消息框1,end of function
  2. user is invalid,无异常: try块,消息框2,end of function during validation: try块,catch块,end of function

如果您只从一些代码路径返回结果(即问题中的1和2),并从“函数结束”中删除return,则3个代码路径中只有2个将具有返回语句。

在这种情况下,修复方法可能是始终在函数的末尾使用return null;,并在拥有有效用户对象的地方使用return validatedUser;跳出。

票数 3
EN

Stack Overflow用户

发布于 2013-03-16 14:36:41

代码语言:javascript
运行
复制
    public static User selectUser(string userName, string password)
    {
        User aUser = new User();
        if (sConnection.State == ConnectionState.Closed)
            sConnection.Open();
        OleDbCommand cmd = sConnection.CreateCommand();
        OleDbDataReader dbReader = null;
        string sql = "SELECT * FROM [User] WHERE ([userName]='" + userName + "' AND [Password]='" + password + "')";
                        cmd.CommandText = sql;
            dbReader = cmd.ExecuteReader();
        try
        {
            while (dbReader.Read())
            {
                if (dbReader.HasRows)
                {
                    MessageBox.Show("Login successful!");
                    aUser.UserName = username;
                    return aUser;
                }
                else
                {
                    MessageBox.Show("Login failed");
                    aUser.UserName =string.empty;
                }
            }
        }
        catch (Exception e)
            {
                MessageBox.Show(e.ToString());
                aUser.UserName = string.empty;
            }
        return aUser;
    }



After you invoke this function, check the return IsNULLofEmpty(aUser.Username)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15446257

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档