在C#中从类方法返回值时感到困惑

时间:2014-03-20 15:46:46

标签: c# asp.net asp.net-mvc-4

我正在尝试在C#中构建一个数据库构造函数(工厂?),但我对如何管理错误感到困惑,而且#34;所有路径都返回一个值"

例如,这是一个我想用来返回数据库连接的类:

public class DB
{
    static SqlConnection Connect()
    {
        SqlConnection thisConnection;

        try { 
            thisConnection = new SqlConnection(connectionString);
        }
        catch (SqlException e) { Console.WriteLine(e.Message); }

        return thisConnection;
    }
}

显然这不会起作用,因为"并非所有路径都返回一个值"。

如果让方法实际返回值,我如何使用try / catch进行管理?显然,我不是一个主程序员;)但我正在研究它。

3 个答案:

答案 0 :(得分:6)

您可以从catch语句返回null或重新抛出异常。 使用静态连接并不是一个好主意。数据库连接规则应“尽可能晚地打开并尽早关闭”

您应该将您的连接包含在using statement中,以确保在使用块结束时处理(关闭)。

using(SqlConnection connection = new SqlConnection(connectionString))
{
  //execute your command etc. 
}

答案 1 :(得分:0)

一个例子,总是返回一些东西

  public bool yesno()
    {
        bool mybool = false;
        try
        {
            mybool = true;
        }
        catch
        {
            mybool = false;

        }
        return mybool;
    }

答案 2 :(得分:0)

如果您无法使用给定的连接字符串实例化对象,我会设置thisConnection = null然后返回它。然后在调用此函数后检查null,如

  If (DB.Connect("ConnectionString") != null) {
      //Connection successful
  }
  else {
     //Failed
  }


 public class DB
 {
     Static SqlConnection Connect(string connectionString)
     {
        SqlConnection thisConnection = null;

        try { 
          thisConnection = new SqlConnection(connectionString);
        }
        catch (SqlException e) { Console.WriteLine(e.Message); }

        return thisConnection;
}

}