试图从服务器获取json并将其放入String变量
var allData;
var userMapOfInfo;
var url =
"my url";
var response1 = await http.get(url);
try {
userMapOfInfo = jsonDecode(response1.body); //here i'm sure there is valid json data
print(userMapOfInfo);
allData = response1.body; //this line cause the error
} catch (e) {
return "yok";
}
完全例外:
[VERBOSE-2:ui_dart_state.cc(148)] Unhandled Exception: RangeError (index): Invalid value: Valid value range is empty: -1
#0 List.[] (dart:core-patch/growable_array.dart:147:60)
#1 List.elementAt (dart:core-patch/growable_array.dart:356:16)
答案 0 :(得分:0)
我不知道为什么android studio在与实际错误无关的代码行中显示错误,在问题代码下面是这段代码
var examsLastExamId = 0;
try {
var exams = userMapOfInfo['student_exams'];
if (exams != null)
examsLastExamId = exams.elementAt(exams.length - 1)['id'];
} finally{
print(examsLastExamId);
}
问题如下:考试不是null,而是空数组,因此它通过我的null检查条件是否存在,在这一行examsLastExamId = exams.elementAt(exams.length - 1)['id'];
中通过异常进行了处理,因为考试没有数据,这非常通过将条件更正为此即可轻松解决此问题:
if (exams != null && exams.length > 0)
更正此代码不是什么大问题,但是很难知道当android studio在远离所需行的另一行代码中抛出异常时,错误在哪里