我建立了一个应用程序,使用了一些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):
每当出现这种情况时,我就能看到问题发生的位置:
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()}]");
}
这里的错误等于:[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
代码的原因)。
提前致谢。