如何知道System.Data.Sqlite对象何时/哪些异常被抛出



对于Sqlite.Net数据提供程序(System.data.Sqlite.dll)(新开发在这里分叉),我很难找出各种类及其方法引发的异常。我知道有SqliteException可以抛出,但什么时候抛出?

我已经确保我有附带的System.Data.Sqlite.xml文档文件,但它似乎没有列出每个方法引发的异常。

我不想把不必要的代码包装到try/catch块中(或者到处盲目地捕捉一个泛型异常)。

我知道SqliteConnection是从DbConnection派生的,SqliteCommand是从DbCommand派生的,所以如果有必要,我想我可以查看那里的文档。但是,没有一个基类会列出SqliteException,那么什么时候会抛出这些类型的异常呢?

PS-我使用的是1.0.64版本(从2009年开始…目前无法升级)。


更新:

由于缺乏响应,有人使用System.Data.Sqlite.dll吗?如果是这样,您将采取什么方法来处理可能从库中可用对象抛出的异常?是否有一些标准的方法来处理这些异常,因为似乎没有关于抛出的异常以及由哪些类引发的异常的文档?


更新2:

我确实在c:\program files\SQLite.NET\Doc\下找到了SQLite.NET文档(看起来有点明显)。到目前为止,文档非常好,但它并没有告诉您抛出了哪些异常。到目前为止,我能做的最好的事情就是查看继承的基类或实现的接口,看看抛出了什么异常。不过,这仍然无助于了解SqliteException对象何时抛出。


更新3:

在获得源代码后,似乎没有一个类本身包含任何/// <exception cref="ExceptionType">Something went wrong!</exception> xml注释。这解释了为什么SQLite.NET帮助文件或Visual Studio Intellisense都没有列出任何可能引发的异常。我创建了一个票证,请求xml注释包含异常,如果它在优先级列表中太低,我会自己添加它们。我会随时向任何感兴趣的人更新这个问题的最新进展。

您可以使用"暴力"方式搜索代码或通过异常的反射器进行搜索。

Es:reflector-->分析"System.Data.SQLite.SQLiteException"-->由实例化

    System.Data.SQLite.SQLite3.Bind_Blob(SQLiteStatement, Int32, Byte[]) : Void
    System.Data.SQLite.SQLite3.Bind_DateTime(SQLiteStatement, Int32, DateTime) : Void
    System.Data.SQLite.SQLite3.Bind_Double(SQLiteStatement, Int32, Double) : Void
    System.Data.SQLite.SQLite3.Bind_Int32(SQLiteStatement, Int32, Int32) : Void
    System.Data.SQLite.SQLite3.Bind_Int64(SQLiteStatement, Int32, Int64) : Void
    System.Data.SQLite.SQLite3.Bind_Null(SQLiteStatement, Int32) : Void
    System.Data.SQLite.SQLite3.Bind_Text(SQLiteStatement, Int32, String) : Void
    System.Data.SQLite.SQLite3.ChangePassword(Byte[]) : Void
    System.Data.SQLite.SQLite3.ColumnMetaData(String, String, String, String&, String&, Boolean&, Boolean&, Boolean&) : Void
    System.Data.SQLite.SQLite3.CreateCollation(String, SQLiteCollation, SQLiteCollation) : Void
    System.Data.SQLite.SQLite3.CreateFunction(String, Int32, Boolean, SQLiteCallback, SQLiteCallback, SQLiteFinalCallback) : Void
    System.Data.SQLite.SQLite3.GetIndexColumnExtendedInfo(String, String, String, Int32&, Int32&, String&) : Void
    System.Data.SQLite.SQLite3.Open(String, SQLiteOpenFlagsEnum, Int32, Boolean) : Void
    System.Data.SQLite.SQLite3.Prepare(SQLiteConnection, String, SQLiteStatement, UInt32, String&) : SQLiteStatement
    System.Data.SQLite.SQLite3.Reset(SQLiteStatement) : Int32
    System.Data.SQLite.SQLite3.SetPassword(Byte[]) : Void
    System.Data.SQLite.SQLite3.SetTimeout(Int32) : Void
    System.Data.SQLite.SQLite3.Step(SQLiteStatement) : Boolean
    System.Data.SQLite.SQLite3_UTF16.Bind_Text(SQLiteStatement, Int32, String) : Void
    System.Data.SQLite.SQLite3_UTF16.Open(String, SQLiteOpenFlagsEnum, Int32, Boolean) : Void
    System.Data.SQLite.SQLiteBase.CloseConnection(SQLiteConnectionHandle) : Void
    System.Data.SQLite.SQLiteBase.FinalizeStatement(SQLiteStatementHandle) : Void
    System.Data.SQLite.SQLiteBase.ResetConnection(SQLiteConnectionHandle) : Void
    System.Data.SQLite.SQLiteDataReader.CheckClosed() : Void
    System.Data.SQLite.SQLiteStatement.BindParameter(Int32, SQLiteParameter) : Void
    System.Data.SQLite.SQLiteTransaction.IsValid(Boolean) : Boolean

最新更新