Retrofit 통신 과정에서 Exception을 구분하여 에러 이유에 따른 예외처리를 구분하였다.
IOException ( 네트워크 통신 문제 )
HttpException ( 통신 결과 응답 코드 오류 -> 404 Not Found , 500 Internal Server Error 등...)
등을 구분하여 표현할 수 있었으나, HttpException의 경우는 따로 구분하지 않았다.

우선 필요한 응답유형을 구분한다. 현재 예시로 든 코드는 로그인 / 닉네임 변경 등의 결과를 반환하는 코드로 모두 성공 / 실패만 반환하면 되기 때문에 모든 응답에서 필요로 하는 success, code를 포함하여 부가적인 message만 받아오도록 SuccessResponseDomain을 지정해줬다.

이후 repository 단에서 서버와의 응답 결과를 받아와 Error 유형에 따라 SuccessResponseDomain에 코드를 담아 ViewModel 의 LiveData로 넘긴다.

ViewModel단에서는 단순히 UI단에서 요청한 도메인의 타입에 따라 repository 단에서 역할을 수행하고, 반환 결과를 response 라이브 데이터에 담기만 하면 된다.

이후 UI단인 Activity에서는 livedata에 observer를 정의, 등록하여 response 타입을 통해 요청 유형을 구분하고, success / code를 구분하여 UI 단에서 적절한 처리를 할 수 있다.
해당 코드는 편의를 위해 하드코딩하였다.
추가적으로 패스워드 전송 시에는 패스워드가 통신에서 평문으로 전송되는 것을 지양해야 하기에 sha256을 적용하여 해쉬된 값을 전송할 수 있도록 구현하였다.


'Android > Feedback on Failures' 카테고리의 다른 글
TFLite의 결과값 처리 (0) | 2023.10.24 |
---|---|
<Refactoring> Retrofit과 데이터 모델 (0) | 2023.09.12 |
<Refactoring> DTO 계층구조 (0) | 2023.09.11 |
<Refactoring> LiveData Observing (0) | 2023.09.10 |
ListAdapter의 submitList UI 반영 문제 (0) | 2023.08.15 |