编程语言
首页 > 编程语言> > c# – 错误:并非所有代码路径返回值?

c# – 错误:并非所有代码路径返回值?

作者:互联网

我收到此错误(并非所有代码路径返回值).我想用唯一键约束在我的数据库中插入数据.但是当我在我的代码中添加它时,我的方法给了我这个错误.

这是我的代码

  public string Insert()
    {

        SqlConnection Conn = new SqlConnection(@"Data Source=ZARAK\SQLEXPRESS;Initial Catalog=ProjectDAL;integrated security=true");


        try
        {
            Conn.Open();
            SqlCommand cmd = new SqlCommand("Insert INTO tbl_User(Name,Email,Password) VALUES ('" + name + "','" + email + "','" + password + "')", Conn);


            int restl = cmd.ExecuteNonQuery();
            //temp = true;
            return "Record Inserted successfully!";
        }
        catch (SqlException ex)
        {
            if (ex.Number == 2627)
            {
                 return "Record Already Exists";
            }
        }
        finally
        {
            Conn.Close();
        }
    }

解决方法:

你的问题在这里:

catch (SqlException ex)
{
    if (ex.Number == 2627)
    {
        return "Record Already Exists";
    }
    // **
}

如果查看应用程序的代码路径,每个代码路径也会隐式添加其他内容.在这种情况下,else不包含return语句,因此错误.

然后是例外……

处理特殊情况的例外情况.软件开发人员之间存在这种隐含的协议,捕获意味着适当地处理它.

处理它的一种方法是通知用户记录已经存在(我猜这是你做的).如果发生了其他事情,通知用户错误并不总是有效的;你可能只想在几秒钟内再次尝试(死锁)或做其他事情.通常你会在更高级别上处理类似的代码,并让异常涟漪.

结果,我不能告诉你**的代码需要什么;你需要根据你想要达到的目标自己决定.

例如:

catch (SqlException ex)
{
    if (ex.Number == 2627)
    {
        return "Record Already Exists"; // user needs to do something
    }

    // We don't want to handle the rest here:
    throw;
}

标签:c,sql,sql-server-2012
来源: https://codeday.me/bug/20190714/1458504.html