앱 오류 처리 - 코틀린 SDK (Kotlin SDK)
앱 오류는 크게 두 가지 카테고리로 나뉩니다.
서비스 오류 는 HTTP 수준에서 Atlas App Services 요청 이 실패할 때 발생합니다. 이러한 오류는 ServiceException을 생성합니다.
Device Sync 가 실패하면 동기화 오류가 발생합니다. 이러한 오류는 SyncException 을 생성합니다. 동기화 예외에 대한 자세한 내용은 동기화 오류 처리를 참조하세요.
그러나 일부 오류는 일시적인 것으로, 클라이언트 또는 SDK가 제어할 수 없는 장애로 인해 발생합니다. 예를 들어, 네트워크 오류로 인해 로그인 시도에 실패했습니다.
다른 오류는 로직 수정이 필요합니다. 예를 들어 잘못된 자격 증명으로 인해 로그인 시도가 실패했습니다.
일시적 오류가 발생하면 오류를 일으킨 작업을 다시 시도해야 합니다. 다시 시도했지만 여전히 작업이 실패하면 로직 수정 사항을 조사합니다.
서비스 오류
ServiceException Atlas App Services HTTP 은 HTTP 이 HTTP 수준에서 실패할 때 200 발생합니다.
연결 오류
ConnectionException 은 SDK와 App Services 백엔드 간의 HTTP 통신이 실패할 때 발생합니다. HTTP 요청 이 상태 코드를 수신할 수 없습니다.
이러한 오류는 SDK의 제어 범위를 벗어난 네트워크 계층에서 발생하므로 일시적인 오류로 간주해야 합니다. 작업을 다시 시도한 다음 재시도가 실패하면 오류를 조사합니다. 클라이언트 장치가 오프라인 상태이므로 작업이 실패하는 경우 앱 사용자에게 인터넷에 다시 연결할 때 작업을 다시 시도하도록 요청할 수 있습니다.
잘못된 요청 오류
잘못된 App Services requests 으로 인해 BadRequestException 이 발생합니다.
잘못된 요청 오류가 발생한 경우:
작업에 대한 입력을 확인합니다.
무엇이 잘못되었는지에 대한 자세한 내용은 앱 로그를 확인하세요.
인증 오류
AuthException 은 로그인, 로그아웃, 등록과 같은 사용자 계정 작업이 실패할 때 발생합니다. 일반적으로 솔루션을 식별하는 데 도움이 되는 보다 구체적인 하위 유형을 얻게 됩니다.
사용자가 이미 오류를 확인했습니다.
이미 확인한 사용자를 확인 하려고 하면 UserAlreadyConfirmedException 이 발생합니다.
사용자가 이미 오류를 확인했다는 메시지가 표시되면 신청 절차를 중단하지 않는 것이 좋습니다. 사용자가 확인되었으므로 안전하게 로그인을 진행할 수 있습니다. 확인을 다시 시도할 필요가 없습니다.
사용자를 찾을 수 없음 오류
UserNotFoundException 은 App Services 백엔드 가 제공된 사용자 이름 을 가진 사용자를 찾을 수 없을 때 발생합니다. 이는 일반적으로 이메일/비밀번호 사용자 이름의 오타로 인해 발생합니다.
이 오류가 발생하면 사용자에게 사용자 이름을 다시 입력하고 다시 시도하라는 메시지가 표시됩니다.
사용자가 이미 존재함 오류
UserAlreadyExistsException 은 클라이언트가 해당 앱에서 이미 사용 중인 사용자 이름으로 사용자를 등록하려고 할 때 발생합니다.
이 오류가 발생하면 사용자에게 다음 메시지를 표시합니다.
다른 사용자 이름 사용
이미 계정이 있는 경우 기존 사용자 이름으로 로그인
유효하지 않은 자격 증명 오류
InvalidCredentialsException 은 잘못된 자격 증명 으로 인해 JSON web token, 이메일 /비밀번호 또는 API 키 사용자 로그인이 실패할 때 발생합니다. 다른 인증 제공자는 대신 인증 오류 를 발생시킵니다.
예시
Kotlin의 내장 runCatching 을 사용하여 SDK의 오류를 처리하다 할 수 있습니다.onSuccess
onFailure
API . 반환된 결과 의 및 콜백을 사용합니다. 성공적인 SDK API 호출 및 오류 사례를 처리하다 합니다. 다음 예시 에서는 익명 사용자를 앱에 로그인합니다. 로그인 시도가 성공하면 성공적인 인증 시도를 로그 하고 사용자를 다른 화면으로 전환합니다. 로그인 시도가 실패하면 각 잠재적 오류 사례를 개별적으로 처리하다 합니다.
사용자가 유효하지 않은 자격 증명을 제공한 경우 시도를 기록하고 팝업 토스트를 표시하여 자격 증명을 확인하도록 권장합니다.
네트워크 연결에 문제가 있는 경우 오류 로그에 문제를 기록하고 팝업 토스트를 표시하여 사용자가 네트워크 연결을 확인하고 다시 시도하도록 권장합니다.
다른 모든 오류의 경우 문제를 오류 로그에 기록하고 사용자에게 로그인 시도가 실패했음을 알리는 팝업 토스트를 표시합니다.
val app = App.create(YOUR_APP_ID) runCatching { app.login(Credentials.emailPassword(email, password)) }.onSuccess { Log.v("Successfully logged in") // transition to another activity, load a fragment, to display logged-in user information here }.onFailure { ex: Throwable -> when (ex) { is InvalidCredentialsException -> { Log.v("Failed to login due to invalid credentials: ${ex.message}") Toast.makeText(baseContext, "Invalid username or password. Please try again.", Toast.LENGTH_LONG).show() } is ConnectionException -> { Log.e("Failed to login due to a connection error: ${ex.message}") Toast.makeText(baseContext, "Login failed due to a connection error. Check your network connection and try again.", Toast.LENGTH_LONG).show() } else -> { Log.e("Failed to login: ${ex.message}") // generic error message for niche and unknown fail cases Toast.makeText(baseContext, "Login failed. Please try again.", Toast.LENGTH_LONG).show() } } }