如何知道System.Data.Sqlite对象抛出何时/什么异常?

Jas*_*own 9 .net sqlite exception system.data.sqlite

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

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

我不想将不必要的代码包装到try/catch块中(或盲目地捕获到处的通用Exception).

我知道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注释的票证,以包含例外,如果它们的优先级列表太低,则提供自己添加它们.对于任何可能感兴趣的人,我会及时更新这个问题.

gia*_*min 4

您可以使用“暴力”方式搜索代码或通过反射器查找异常。

Es:反射器 --> 分析“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
Run Code Online (Sandbox Code Playgroud)