반응형
질문
내 플러터 앱에서는 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); }
반응형
댓글