gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 06:21:53 24 4
gpt4 key购买 nike

我找不到 Sqlite.Net data provider (System.Data.Sqlite.dll) 的问题(新开发已经 fork here),各种​​类及其方法抛出什么异常。我知道可以抛出 SqliteExceptions,但什么时候抛出?

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

我不想将不必要的代码包装到 try/catch block 中(或盲目地到处捕获通用异常)。

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

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


更新:

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


更新 2:

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


更新 3:

在获得源代码后,似乎没有一个类本身包含任何 /// <exception cref="ExceptionType">Something went wrong!</exception> xml注释。这解释了为什么 SQLite.NET 帮助文件或 Visual Studio Intellisense 都没有列出任何可能抛出的异常。我创建了一个 ticket要求 xml 注释包含异常(exception)情况,如果在他们的优先级列表中太低,则提出自己添加它们。对于任何可能有兴趣的人,我会及时更新这个问题。

最佳答案

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

是:反射器 --> 分析“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

关于.net - 如何知道 System.Data.Sqlite 对象何时/什么异常被抛出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6444755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com