VSCode、Flutter:Try-Catch 块未捕获异常

问题描述 投票:0回答:1

我正在尝试捕获代码行中发生的异常

var excel = Excel.decodeBytes(bytes);
但错误没有被捕获。

编译器停在该行并显示:

Exception:
StateError (Bad state: No element)

如果我在这个地方跳过一些异常,代码将正确执行(我的意思是没有捕获到任何内容)。控制台不会出现任何错误,只会打印“Excel解码成功”,并且excel文件导入正确。

代码:

 void readFile(File file) {
    log('Excel Data Import In Process...');
    var bytes = File(file.path).readAsBytesSync();
    try {
      print('Excel Import in process');
      var excel = Excel.decodeBytes(bytes); // exception in this line ...
      print('Excel decoding successful'); // ... but still successful
      //rest of code
    } on StateError catch (e) {
      print('StateError Excel: $e');
    } on Exception catch (e) {
      print('Exception Excel: $e');
    } catch (e, stackTrace) {
      print('Error Excel: $e');
      print('Stack $stackTrace');
    }
}

堆栈和变量

我尝试过:

  • 使用另一个Excel文件(发生错误);
  • 使用空的Excel文件(发生错误);
  • 直接使用文件,而不是通过文件选择器(发生错误),
  • 在新的 flutter 项目中运行此代码(没有发生错误
  • 在真实设备上以配置文件模式运行应用程序时(未发生错误)。
flutter exception try-catch
1个回答
0
投票

decodeBytes
方法可能不是投掷

这里是一个示例,如何处理它。

Excel parseExcelFile(List<int> _bytes) {
  return Excel.decodeBytes(_bytes);
}

然后

Excel excel = await compute(parseExcelFile, _bytes);
© www.soinside.com 2019 - 2024. All rights reserved.