본문 바로가기

코딩강의/shopping_list(플러터-유데미)

229. Better Error Handling

1. 기존 에러 처리는 그 외의의 오만가지 에러들을 잡아낼 수가 없다.

그래서 try catch를 사용한다.

 

 - grocery_list.dart

https://github.com/academind/flutter-complete-guide-course-resources/blob/main/Code%20Snapshots/12%20Backend%20%26%20Http/09%20Better%20Error%20Handling/lib/widgets/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 구문 이후에 두면 된다.