最后一个块中的对象引用异常

时间:2013-04-08 12:11:23

标签: exception c#-3.0

您好我有以下方法。

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是否有任何其他方式可以修改代码,以便不会发生异常。 请帮助我。

1 个答案:

答案 0 :(得分:0)

bool isOpen = false; 
try 
 {  
   _dataAccess.openconnection(); 
   isOpen = true; 
 } 
 finally 
 { 
  if (isOpen) 
  _dataAccess.closeconnection(); 
 }

我发现这是一个有效的解决方案。欢迎任何进一步的想法。在这种情况下,连接打开时将设置bool变量。