如何在Dart/FLUTER中捕获sqflite数据库异常

如何在Dart/FLUTER中捕获sqflite数据库异常,dart,flutter,Dart,Flutter,我无法捕获引发数据库异常的sqflite SQL错误。注意:这是一个未来的异步 示例代码 Future<String> getData() async { Directory documentsDirectory = await getApplicationDocumentsDirectory(); String path = join(documentsDirectory.path, globals.databaseName); Database db = await openD

我无法捕获引发数据库异常的sqflite SQL错误。注意:这是一个未来的异步

示例代码

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");
}
我想做的是能够捕获SQL错误并处理它们

我已经试过了。然后,然后。捕捉错误——但没有让它起作用

从我所读到的,普通的try{}catch{}对期货不起作用。(我一开始就试过了……但没用)

导致相同的错误:

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

听起来问题已通过升级到最新版本得到修复(不知道报告问题中使用了哪个版本):


SQLException(iOS和Android)被传播到Dart,在使用async/await时可以使用try/catch作为数据库异常捕获,如这里的测试所示:

如果您使用
async
/
await
您可以使用
try
/
catch
我试过了。。。(正如我在上面最后一句中提到的)。try{List results=await db.rawQuery(“故意错误形成的sql示例”);}catch(e){print(e);}返回相同的错误e/SQLiteLog(3148):(1)接近“mal”:语法错误我正在寻找一个有效的try-catch方案。请发布显示您在上面原始帖子中尝试的代码。看起来异常没有传播到Dart。我不知道如何修复。
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