일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 좋은 하루
- 노브랜드 버거
- 포기하지 않기
- Android 10
- 대한민국 소프트웨어대전
- 도담도담 V2
- 잘못된 칭찬
- performance of swiftui
- Scoped Storage
- 도담도담
- CleanArchitecture
- 서울 올림픽 파크텔
- swiftui uikit performance
- ErrorHandlingRIBs
- performance analysis of swiftui and uikit
- 목표 성취
- swiftUI
- 안드로이드
- performance of uikit
- xcframework
- B1ND
- Error
- 긴장긴장
- 선산 휴게소
- 칭찬 하는 법
- 회사 탐방
- 내 철학
- 열심히 살았다
- 코엑스
- ios
- Today
- Total
건우의 개발 일기
RIBs Scope을 통해 공통 에러 처리하기 본문
https://rjsdnqkr0.tistory.com/18
Mobile CleanArchitecture Error Handling
Clean Architecture 구조에 맞게 오류를 처리하는 방법에 대한 생각 👍 Domain Error 에러는 최종적으로 사용자에게 보이게 된다. 그렇기 때문에 개발자 혼자 생각하는 것이 아닌 기획자, 디자이너와의
rjsdnqkr0.tistory.com
Domain Error 개념으로 에러를 핸들링하는 방법에 대한 생각 정리 글이다
여기의 확장형으로 공통적으로 발생될 수 있는 에러를 RIBs를 통해 Scope을 지정하여 핸들링하는 방법에 대한 생각이다
🤔 Common Error Handling 시 발생될 문제점
앱에서는 공통적으로 발생 될 수 있는 에러가 존재한다. 대표적인 예시로 ExpiredSessionError가 있다.
ExpiredSessionError는 LoggedIn 상태에서 사용하는 모든 통신 UseCase가 발생할 수 있는 에러이다.
이러한 에러를 처리하기 위해 시도할 수 있는 방법은 대표적으로 두 가지가 있을 것이다.
- 세션이 만료될 수 있는 모든 UseCase에 ExpiredSessionError를 명세한다.
- 공통적으로 처리할 수 있는 모듈을 만들어 ExpiredSessionError 발생 시 바로 처리하도록 한다.
먼저 첫번째 처리 방법의 문제점은 당연하게 예상할 수 있다. LoggedIn에서 사용되는 모든 UseCase에 명세하는 것은 상당한 비용이 들고 매번 같은 처리를 반복하게 될 것이다.
두 번째 방법은 LoggedOut 상황일 때 문제가 발생한다. LoggedOut 상태에서는 ExpiredSessionError가 발생할 수 없다.
하지만 만약 LoggedOut 상태에서 ExpiredSessionError가 발생하게 되면 어떻게 될까? (서버 error code가 잘못 내려오거나, Error throw 로직을 잘못 작성해주었을 경우)
예상치 못한 처리 로직을 수행하게 되는 것이다. 로그인 화면이 하나 더 뜰 수도 있고 심한 경우는 예외 처리를 하지 않아 앱이 죽을 수도 있다.
😎 RIBs Scope을 통해 문제점 해결하기

RIBs에서는 State Tree라는게 존재한다.
이러한 Tree 구조를 사용했을 장점은 Scope을 한정시킬 수 있다는 것이다.

개별 RIB을 상태에 맞게 격리 시킬수 있다.
나는 앞서 지적한 문제점을 이러한 RIBs Scope 개념을 활용하여 해결해보았다.

ExpiredSessionError는 LoggedIn Scope 내에서만 발생할 수 있기 때문에 LoggedIn에 에러 핸들링 로직을 작성하게 된다.

이렇게 되면 LoggedIn Scope 내에서 발생한 ExpiredSessionError 만 핸들링을 해주고 LoggedOut, Root에서 발생한 ExpiredSessionError는 디폴트 에러 처리를 해주게 된다.
이렇듯 Scope을 한정지어 공통 에러를 처리하게 되면 예상치 못한 상황을 회피할 수 있게 된다.
'고민연구' 카테고리의 다른 글
UIViewController init에서 view를 호출하여도 되는가 (0) | 2022.03.05 |
---|---|
Mobile CleanArchitecture Error Handling (Domain Error) (0) | 2022.03.03 |