상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - LiveData를 에러 핸들링에 적용하는 방법은?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
LiveData를 에러 핸들링에 적용하는 방법은 보통 다음과 같은 패턴과 접근법으로 구현됩니다. LiveData는 기본적으로 상태를 관찰하는 객체이기 때문에, 에러 정보도 별도의 상태로 관리하여 UI에 전달하는 것이 중요합니다. 1. 에러 상태를 위한 별도의 LiveData 정의하기 보통 데이터 로딩 성공 상태와 에러 상태를 구분해서 관리하기 위해 데이터 상태용 LiveData와 에러 상태용 LiveData를 별도로 만듭니다. 예를 들어: ```kotlin private val _data = MutableLiveData<Data>() val data: LiveData<Data> = _data private val _error = MutableLiveData<String?>() val error: LiveData<String?> = _error ``` 이렇게 하면 데이터와 에러가 각각 독립적으로 UI에 전달되고 관찰됩니다. 2. 네트워크 요청 등에서 에러 발생시 에러 LiveData 업데이트하기 ViewModel 내부에서 데이터를 로딩할 때, try-catch구문 또는 Result 타입 등을 이용하여 에러를 감지하고, 에러 메시지 또는 에러 객체를 에러 LiveData에 전달합니다. ```kotlin fun loadData() { viewModelScope.launch { try { val result = repository.getData() _data.value = result _error.value = null // 에러 해제 } catch (e: Exception) { _error.value = e.message ?: "Unknown error" } } } ``` 3. UI에서 에러 LiveData 관찰하기 Fragment나 Activity에서는 error LiveData를 관찰하여 에러 메시지가 전달되면 에러 다이얼로그를 띄우거나 토스트를 보여주는 등의 사용자 피드백을 제공합니다. ```kotlin viewModel.error.observe(viewLifecycleOwner) { errorMessage -> errorMessage?.let { Toast.makeText(context, it, Toast.LENGTH_SHORT).show() } } ``` 4. 에러 상태의 초기화 및 재시도 지원 에러 발생 후 사용자가 재시도할 수 있도록 에러 상태를 초기화하거나 재시도 함수를 제공해 줍니다. ```kotlin fun retry() { _error.value = null loadData() } ``` 5. 단일 이벤트로 에러 처리하기 (Event Wrapper 적용) LiveData는 configuration 변화 시 같은 데이터가 다시 전달되는 문제가 있어 에러 메시지 같은 이벤트에 Event 클래스를 사용하는 경우가 많습니다. ```kotlin private val _errorEvent = MutableLiveData<Event<String>>() val errorEvent: LiveData<Event<String>> = _errorEvent fun loadData() { viewModelScope.launch { try { val result = repository.getData() _data.value = result } catch (e: Exception) { _errorEvent.value = Event(e.message ?: "Unknown error") } } } ``` UI에서는 Event를 처리해서 중복 표시를 방지합니다. --- 요약 - 데이터 상태와 에러 상태를 별도의 LiveData로 관리한다. - 네트워크 호출 등에서 에러가 발생하면 에러 LiveData를 업데이트한다. - UI는 에러 LiveData를 관찰해 사용자에게 에러를 알린다. - 필요하면 에러 이벤트를 감싸는 Event 클래스를 사용해 중복 처리 문제를 예방한다. - 재시도 UI와 로직을 추가해 에러 상황을 개선한다. 이러한 패턴을 통해 LiveData 기반의 에러 핸들링을 자연스럽고 확장성 있게 구현할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기