비정상 종료 및 예외 - iOS SDK

이 문서에서는 iOS v2용 Google 애널리틱스 SDK를 사용하여 비정상 종료 및 예외 측정을 개략적으로 설명합니다.

개요

비정상 종료 및 예외 측정을 사용하면 앱에서 발생하는 비정상 종료 및 예외의 수와 유형을 측정할 수 있습니다. Google 애널리틱스의 예외는 다음과 같습니다.

  • NSString (선택사항) 설명: 예외에 관한 설명입니다 (영문 기준 최대 100자). nil가 허용됩니다.
  • boolean isFatal – 예외가 치명적인지 여부를 나타냅니다. YES는 치명적임을 나타냅니다.

비정상 종료 및 예외 데이터는 주로 비정상 종료 및 예외 보고서에서 확인할 수 있습니다.

포착된 예외

포착된 예외는 앱에서 예외 처리 코드를 정의한 오류입니다. 이는 일반적으로 앱을 정상적으로 사용하는 동안 발생할 것으로 예상되는 오류이며 앱에서 복구할 수 있도록 하려는 오류입니다(예: 데이터 요청 중 가끔 네트워크 연결 시간 초과).

예외 처리 코드의 catch 블록에 sendException:를 추가하여 포착된 예외를 측정할 수 있습니다.

다음 예에서는 앱이 클라우드에서 최고 점수 목록을 로드하려고 합니다. 네트워크 연결 속도가 느려서 요청 시간이 초과되면 Google에서는 사용자를 위해 예외를 처리하기 전에 Google 애널리틱스로 예외를 전송합니다.

@try {
  NSArray *highScores = [self getHighScores];
}
@catch (NSException *exception) {
    [tracker sendException:NO // Boolean indicates non-fatal exception.
            withDescription:@"Connection timout %d: %@", connectionError, errorDescription];
}

다음 예시와 같이 sendException:withDescription:withNSException:를 사용하여 예외의 설명 필드에 이름과 이유를 자동으로 채울 수 있습니다.

@try {
  NSArray *highScores = [self getHighScores];
}
@catch (NSException *exception) {
  [tracker sendException:NO withNSException:exception);
}

오류 도메인, 코드, 설명이 포함된 오류를 자동으로 채우려면 아래와 같이 sendException:withDescription:withNSError:를 사용합니다.

NSError *error = nil;
if (![self updateHighScoresWithError:&error]) {
  [tracker sendException:NO withNSError:error);
}

포착되지 않은 예외 측정

포착되지 않은 예외는 런타임에 앱에 예상치 못한 조건이 발생하여 치명적인 경우가 많아 결과적으로 앱이 비정상 종료되는 경우를 나타냅니다. 포착되지 않은 예외는 sendUncaughtExceptions 속성을 YES로 설정하여 Google 애널리틱스로 자동으로 전송할 수 있습니다. 이 작업은 앱 대리자의 application:didFinishLaunchingWithOptions 메서드에서 편리하게 수행할 수 있습니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GAI sharedInstance].sendUncaughtExceptions = YES; // Enable 

  // ... the rest of your code, include other GAI properties you want to set.
}

자동 예외 측정을 사용할 때는 다음 사항에 유의하세요.

  • 자동 예외 측정을 사용하여 전송된 모든 예외는 Google 애널리틱스에서 심각한 것으로 보고됩니다.
  • 설명 필드는 스택 트레이스를 사용하여 자동으로 채워집니다.