본문 바로가기
Flutter/Flutter FAQ

Flutter 다트에서 Future에서 오류를 반환하는 방법은 무엇인가요?, How do I return error from a Future in dart?

by 베타코드 2023. 10. 1.
반응형

질문


내 플러터 앱에서는 HTTP 요청을 처리하고 디코딩된 데이터를 반환하는 퓨처가 있습니다. 그러나 status code != 200인 경우 .catchError() 핸들러로 오류를 전송할 수 있도록 하고 싶습니다.

다음은 퓨처입니다:

Future<List> getEvents(String customerID) async {
  var response = await http.get(
    Uri.encodeFull(...)
  );

  if (response.statusCode == 200){
    return jsonDecode(response.body);
  }else{
    // 여기서 오류를 반환하려고 합니다 
  }
}

이 함수를 호출할 때 다음과 같이 오류를 얻을 수 있기를 원합니다:

getEvents(customerID)
.then(
  ...
).catchError(
  (error) => print(error)
);

답변


에러/예외 발생시키기:

return 또는 throw을 사용하여 에러나 예외를 발생시킬 수 있습니다.

  • return 사용하기:
    Future<void> foo() async {
      if (someCondition) {
        return Future.error('FooError');
      }
    }
    
  • throw 사용하기:
    Future<void> bar() async {
      if (someCondition) {
        throw Exception('BarException');
      }
    }
    

에러/예외 처리하기:

catchError 또는 try-catch 블록을 사용하여 에러나 예외를 처리할 수 있습니다.

  • catchError 사용하기:
    foo().catchError(print);
    
  • try-catch 사용하기:
    try {
      await bar();
    } catch (e) {
      print(e);
    }
    
반응형

댓글