sta*_*234 4 exception dart flutter
我构建了一个应用程序,我有几个 try-catch。问题是,每当我打印出异常时,它只打印出异常的第一行。例如,当我删除所有 try-catch 并引发异常时,它会显示以下内容:
E/flutter (15478): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Null check operator used on a null value
E/flutter (15478): #0 MyClass._insertIntoDB (package:test/util/my_class.dart:186:25)
E/flutter (15478): <asynchronous suspension>
E/flutter (15478): #1 MyClass.download(package:test/util/my_class.dart:62:11)
E/flutter (15478): <asynchronous suspension>
E/flutter (15478): #2 blabla.asaa(package:test/sync.dart:94:9)
E/flutter (15478): <asynchronous suspension>
E/flutter (15478): #3 tata.dodo(package:test/my_screen.dart:91:11)
E/flutter (15478): <asynchronous suspension>
E/flutter (15478):
Run Code Online (Sandbox Code Playgroud)
每当发生这种情况时,我都可以看到问题发生在哪里:MyClass._insertIntoDB (package:test/util/my_class.dart:186:25)<--
但是当我将给定的代码放在 try-catch 之间时,我只返回:
E/flutter (15478): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Null check operator used on a null value
消息,说的是问题是什么,但没有说问题出在哪里......
这是首先处理异常的地方:
try {
List<MyDto> dtoList = dtoFromJson(body);
if (dtoList.isNotEmpty) {
for (var i in dtoList) {
await _insertIntoDB(i, db);
}
}
} catch (error) {
throw Exception(
"Problem while JSON decoding results. [error=${error.toString()}]");
}
Run Code Online (Sandbox Code Playgroud)
这里的误差等于:[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Null check operator used on a null value
所以我得到这个错误:"Problem while JSON decoding results. [error=[ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Null check operator used on a null value]"
因此,没有显示抛出异常的位置(文件中的哪一行)的实际有用信息......是否可以包含堆栈跟踪的其余部分?
请注意,看到我没有问为什么抛出异常!(这不是我不包含代码的原因insertIntoDb)。
提前致谢。
DJa*_*ari 10
catch 的第二个参数是stackTrace
try {
List<MyDto> dtoList = dtoFromJson(body);
if (dtoList.isNotEmpty) {
for (var i in dtoList) {
await _insertIntoDB(i, db);
}
}
} catch (error, stack) {
print(stack);
throw Exception(
"Problem while JSON decoding results. [error=${error.toString()}]");
}
Run Code Online (Sandbox Code Playgroud)