如何处理异常:"对象引用未设置为对象的实例"

时间:2016-06-19 10:21:46

标签: c# sqlite ado.net

if (!(string.IsNullOrWhiteSpace(eveTable)))
{
    try
    {
        sqLite.Open();                        
        Query = "CREATE TABLE '" + eveTable + "'(EID TEXT PRIMARY KEY, Name TEXT, RollNo TEXT, University TEXT, College TEXT, Course TEXT, Semester TEXT, Section TEXT, Prize TEXT);";                        
        SQLiteCommand createCommand = new SQLiteCommand(Query, sqLite);
        createCommand.ExecuteNonQuery();
        MessageBox.Show("Event Creation Success!");
    }
    catch (Exception exception)
    {
        MessageBox.Show(exception.Message);
    }
    finally
    {
        EventsDB ev = new EventsDB();
        sqLite.Close();                       
        this.Hide();
        ev.Show();
    }
}
else
{
    MessageBox.Show("White space not allowed");
}    

1 个答案:

答案 0 :(得分:1)

如果sqLite实例尚不存在(我认为它不存在),则首先会在sqLite.Open()中获得一个Object Reference异常,该异常由catch-all异常处理程序处理。然后代码将在finally {}代码块中继续,并在sqLite.Close()上遇到另一个Object Reference异常。

如果你想避免第二个例外:

SELECT * FROM t_tenancy_details WHERE
    agreement_date >= DATE_FORMAT( CURRENT_DATE - INTERVAL 1 MONTH, '%Y/%m/01' )AND
    agreement_date < DATE_FORMAT( CURRENT_DATE, '%Y/%m/01' )

我不知道sqLite的类,但您可能还需要在close()之前检查sqLite是否仍处于打开状态

if(sqLite!=null)
  sqLite.Close();

**将IsOpen()方法替换为适用于sqLite类的任何内容