您好我有以下方法。
public bool IsTableExist(string tableName)
{
try
{
if (Utility.Utility.CreatedTable.Contains(tableName.ToLower()))
return true;
else
{
_dataAccess.openconnection();
if (!_dataAccess.isTableExist(tableName))
return false;
Utility.Utility.CreatedTable.Add(tableName.ToLower());
return true;
}
}
catch (Exception ex)
{
Logger.WriteLogFile("QueryBuilder", "IsTableExist", ex.StackTrace);
}
finally
{
_dataAccess.closeconnection();
}
return false;
}
我在这里遇到了异常:
Object reference not set to an instance of an object.
at DataAccessLayer.DataAccess.closeconnection()
at QueryBuilder.QueryBuilder.IsTableExist(String tableName)
at ObjectFilling.BusinessLogic.GetDataTypeForAllTags(DataTable tagDetails)
如何解决异常。我有openconnection()和closeconnection()方法用于与数据库通信。调用closeconnection()
方法但openconnection()
时,finally块中抛出异常没有被调用。只有当代码到达else块时才会调用.openconnectio()。我可以在else块中使用bool变量来通知finally块何时调用closeconnection.Or是否有任何其他方式可以修改代码,以便不会发生异常。
请帮助我。
答案 0 :(得分:0)
bool isOpen = false;
try
{
_dataAccess.openconnection();
isOpen = true;
}
finally
{
if (isOpen)
_dataAccess.closeconnection();
}
我发现这是一个有效的解决方案。欢迎任何进一步的想法。在这种情况下,连接打开时将设置bool变量。