gpt4 book ai didi

Flutter - 异步文件读取异常处理

转载 作者:行者123 更新时间:2023-12-05 04:20:15 27 4
gpt4 key购买 nike

我是 dart/flutter 的新手,对这种情况下的 async-await flutter 异常处理有点困惑。

所以基本上我有这个功能可以从 flutter 数据文件夹加载 .json 设置文件。它应该加载设置并在找不到文件的情况下抛出 SettingsLoadingException,因此调用函数知道何时创建新文件。

这种机制有效,但在这种情况下有两件事让我感到困惑。首先,即使打印“No settings file!”,它仍然向控制台打印未捕获的 FileSystemException。表明它被捕获了。其次,“没有设置文件”和错误被打印两次 - 那么它是否捕获了两个错误?

Future<Settings> loadSettings() async {
try {
String fileName = SettingsService.settingsFileName;
File file = File("${await _localPath}/${dbFolderName}/${fileName}");

String fileContent = await file.readAsString();
Map<String, dynamic> settingJsonMap = jsonDecode(fileContent);
Settings settings = Settings.fromJson(settingJsonMap);

return settings;
} catch (e) {
print("No settings file!");
throw SettingsLoadingException("Unable to load settings");
}
}

I/flutter (10533): No settings file!
I/flutter (10533): No settings file!
E/flutter (10533): \[ERROR:flutter/runtime/dart_vm_initializer.cc(41)\] Unhandled Exception: FileSystemException: Cannot open file, path = '/data/user/0/com.yapps.smartdart/app_flutter/db/settings.json' (OS Error: No such file or directory, errno = 2)
E/flutter (10533): #0 \_File.open.\<anonymous closure\> (dart:io/file_impl.dart:356:9)
E/flutter (10533): \<asynchronous suspension\>
E/flutter (10533):
E/flutter (10533): \[ERROR:flutter/runtime/dart_vm_initializer.cc(41)\] Unhandled Exception: FileSystemException: Cannot open file, path = '/data/user/0/com.yapps.smartdart/app_flutter/db/settings.json' (OS Error: No such file or directory, errno = 2)
E/flutter (10533): #0 \_File.open.\<anonymous closure\> (dart:io/file_impl.dart:356:9)
E/flutter (10533): \<asynchronous suspension\>
E/flutter (10533):
E/SurfaceSyncer(10533): Failed to find sync for id=0
W/Parcel (10533): Expecting binder but got null!

我已经尝试使用 .then 和 .catchError API,但它们不起作用并导致我遇到完全不同的错误。

最佳答案

您首先感到困惑的是,FileSystemException 是您正在使用的插件的 native 端的错误。所以不用担心。错误只是在插件端被捕获,正在打印的错误消息也是如此。

第二件事是消息被打印两次不应该与 FileSystemException 有任何关系。我的猜测是你调用了两次方法。如果是这样,您可以通过在 Debug模式下运行此代码并使用断点来确认这一点

关于Flutter - 异步文件读取异常处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74563188/

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