Closed brownglasses closed 1 month ago
VerifyPhoneNumberUseCase 의 구조를 잘 보기, 다른 예외 처리와는 조금 다름,
VerifyPhoneNumberUseCase
에서의 예외 처리는 다른 use case와 다음과 같은 점에서 차이가 있습니다:
콜백 사용: FirebaseAuth
의 비동기 인증 프로세스는 여러 단계의 콜백을 필요로 하며, 이로 인해 예외를 콜백 내에서 직접 처리하고 사용자에게 즉시 피드백을 제공해야 합니다.
Firebase 특화 예외 처리: FirebaseAuthException
과 같은 Firebase 특화 예외를 여러 위치에서 다루며, 일반적인 use case보다 특정한 에러 상황을 세분화하여 처리합니다.
실시간 처리: 전화번호 인증은 실시간으로 진행되기 때문에, 자동 인증, 코드 전송, 타임아웃 등 다양한 단계에서 예외를 세심하게 다룹니다.
사용자 경험 초점: 사용자 경험을 개선하기 위해 명확하고 이해하기 쉬운 오류 메시지를 제공하며, 사용자에게 즉각적인 피드백을 주기 위해 verificationFailed
와 같은 콜백을 사용합니다.
상태 관리: 인증 과정의 여러 상태(자동 인증 완료, 실패, 코드 전송 등)를 개별적으로 관리하여 각 상태에 맞는 적절한 처리를 수행합니다.
즉 예외를 처리하는 콜백이 존재하므로, 조금 다르게 처리할 필요가 있다.
uscase 와 viewModel 에서 에러가 나타났을 때, try ~ catch 하는 구문을 작성
보충 설명
Flutter 앱에서 모든 에러를 깔끔하게 처리하는 것은 사용자 경험을 향상시키고 디버깅을 용이하게 만드는 중요한 부분입니다. 에러를 체계적으로 관리하기 위해서는 적절한 아키텍처와 에러 핸들링 전략을 구축해야 합니다. 여기서는 MVVM 패턴을 기반으로 Riverpod을 활용하여 에러를 일관되게 처리하는 방법을 살펴보겠습니다.
1. 에러 처리 전략 설계
에러 처리 전략은 다음과 같은 사항을 포함해야 합니다.
2. 에러 클래스 정의
에러를 관리하기 위한 전용 클래스를 정의합니다.
app_exception.dart
message
와 선택적인details
를 포함합니다.단계별 가이드
1. UseCase에서 커스텀 예외 사용하기
CreateProfileUseCase
는 프로필을 생성하는 것과 관련된 로직을 담당하며, 프로필 사진을 업로드하고 Firestore에 프로필을 저장합니다. 이 과정에서 발생할 수 있는 다양한 에러를 커스텀 예외로 캡슐화하여 처리하는 것이 좋은 방법입니다.아래는
CreateProfileUseCase
에서 커스텀 예외를 사용하는 방법입니다:설명:
AuthorizationException
으로 던집니다.DatabaseException
및FileNotFoundException
으로 던집니다.NetworkException
으로 던집니다.AppException
으로 던집니다.2. ViewModel에서 예외 처리
ProfileCreateViewModel
에서는 UseCase에서 던진 예외를 처리하고 UI 상태를 적절히 업데이트해야 합니다. 아래는 ViewModel을 수정하는 방법입니다:설명:
catch
블록에서 처리하여 강력성을 유지합니다.요약
커스텀 예외를 사용함으로써 다음을 달성할 수 있습니다:
이러한 설정을 통해 앱은 더욱 견고해지고, 유지보수가 쉬워지며, 사용자에게 명확한 오류 피드백을 제공할 수 있습니다.