我正在尝试在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进行管理?显然,我不是一个主程序员;)但我正在研究它。
答案 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;
}
}