1. 기존 에러 처리는 그 외의의 오만가지 에러들을 잡아낼 수가 없다.
그래서 try catch를 사용한다.
- grocery_list.dart
1) try {
final response = await http.get(url);
if (response.statusCode >= 400) {
setState(() {
_error = 'Failed to fetch data. Please try again later.';
});
}
if (response.body == 'null') {
setState(() {
_isLoading = false;
});
return;
}
final Map<String, dynamic> listData = json.decode(response.body);
final List<GroceryItem> loadedItems = [];
for (final item in listData.entries) {
final category = categories.entries
.firstWhere(
(catItem) => catItehttp://m.value.title == item.value['category'])
.value;
loadedItems.add(
GroceryItem(
id: item.key,
name: item.value['name'],
quantity: item.value['quantity'],
category: category,
),
);
}
setState(() {
_groceryItems = loadedItems;
_isLoading = false;
});
} catch (error) {
setState(() {
_error = 'Something went wrong! Please try again later.';
});
}
}
--> try 안에서 더 세부적인 에러처리들을 할 수 있고, 그 외 에러들은 catch 구문 이후에 두면 된다.
'코딩강의 > shopping_list(플러터-유데미)' 카테고리의 다른 글
| 231. Using the FutureBuilder Widget (0) | 2023.11.16 |
|---|---|
| 228. Handling the "No Data" Case (0) | 2023.11.15 |
| 227. Sending DELETE Requests (0) | 2023.11.15 |
| 226. Error Response Handling (0) | 2023.11.15 |
| 225. Managing the Loading State (0) | 2023.11.15 |