gpt4 book ai didi

dart - 如何在 Dart/Flutter 中捕获 sqflite DatabaseException

转载 作者:IT王子 更新时间:2023-10-29 06:44:31 27 4
gpt4 key购买 nike

我未能成功捕获引发数据库异常的 sqflite SQL 错误。注意:这是一个 Future 和 async。

示例代码

Future<String> getData() async {

Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, globals.databaseName);
Database db = await openDatabase(path);

List results = await db.rawQuery("mal formed example of sql on purpose");
}

当我运行上面的代码时,rawQuery 会抛出故意错误的 SQL。控制台显示:

E/SQLiteLog( 7908): (1) near "mal": syntax error

我想做的是能够捕获并处理 SQL 错误。

我试过 .then 和 .catchError - 但没有让它工作。

据我所知,正常的 try {} catch {} 不适用于 Futures。 (我确实尝试过从……开始,但没有用)。

try {
List results = await db.rawQuery("mal formed example of sql on purpose");
} catch (e) {
print(e);
}

导致同样的错误:

E/SQLiteLog( 3148): (1) near "mal": syntax error

最佳答案

听起来问题已通过升级到最新版本得到解决(不知道报告的问题中使用了哪个版本):https://github.com/tekartik/sqflite/issues/17

SQLException(iOS 和 Android)被传播到 Dart,并且可以在使用 async/await 时使用 try/catch 作为 DatabaseException 捕获,如此处的测试所示:https://github.com/tekartik/sqflite/blob/master/example/lib/exception_test_page.dart#L89-L94

关于dart - 如何在 Dart/Flutter 中捕获 sqflite DatabaseException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48085809/

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