이 문서에서는 Android용 Google 애널리틱스 SDK v4를 사용한 비정상 종료 및 예외 측정에 관해 개략적으로 설명합니다.
개요
비정상 종료 및 예외 측정을 사용하면 앱에서 발생하는 포착 및 포착되지 않은 비정상 종료 및 예외의 수와 유형을 측정할 수 있습니다. 예외의 필드는 다음과 같습니다.
필드 이름 | 유형 | 필수 | 설명 |
---|---|---|---|
설명 | String |
아니요 | 예외에 관한 설명입니다 (영문 기준 최대 100자). null 가 허용됩니다. |
isFatal | boolean |
예 | 예외가 치명적인지 여부를 나타냅니다.
true 는 치명적임을 나타냅니다. |
비정상 종료 및 예외 데이터는 주로 비정상 종료 및 예외 보고서에서 확인할 수 있습니다.
포착된 예외
데이터 요청 중 간헐적인 네트워크 연결 시간 초과와 같은 포착된 예외는 처리할 코드를 구현한 앱의 오류입니다.
다음 예와 같이 추적기에 예외 필드 값을 설정하고 조회를 전송하여 포착된 예외를 측정합니다.
// Get tracker. Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(TrackerName.APP_TRACKER); // Build and send exception. t.send(new HitBuilders.ExceptionBuilder() .setDescription(getExceptionMethod() + ":" + getExceptionLocation()) .setFatal(getExceptionFatal()) .build());
getTracker
메서드에 대한 자세한 내용은
고급 구성을 참조하세요.
포착되지 않은 예외 측정
포착되지 않은 예외는 런타임에 앱에 예상치 못한 조건이 발생하여 치명적인 경우가 많아 앱이 비정상 종료되는 경우를 나타냅니다. 포착되지 않은 예외는 ga_reportUncaughtExceptions
구성 값을 설정하거나 ExceptionReporter
클래스를 사용하여 Google 애널리틱스로 자동으로 전송할 수 있습니다.
자동 구성
앱에서 포착되지 않은 모든 예외를 자동으로 Google 애널리틱스로 전송하려면 XML 구성 파일에 다음 줄을 추가하세요.
<bool name="ga_reportUncaughtExceptions">true</bool>
자동 예외 측정을 사용하여 예외를 전송한 후에는 해당 예외가 Thread
의 기본 예외 핸들러로 전달됩니다.
고급 구현 사용
고급 구현을 사용하고 ga_reportUncaughtExceptions
구성 값을 사용하지 않는 경우 ExceptionReporter
클래스를 사용하여 포착되지 않은 자동 예외 측정을 구현합니다.
ExceptionReporter
는 특정 스레드 또는 앱의 모든 스레드에 대해 기본 포착되지 않은 예외 핸들러 역할을 할 수 있습니다. Google 애널리틱스로 예외를 전송한 후 ExceptionReporter
클래스는 선택적으로 예외를 개발자가 제공하는 포착되지 않은 예외 핸들러에 전달할 수 있습니다.
다음 코드는 새로운 ExceptionReporter
객체를 만들어 이를 새로운 기본 포착되지 않은 예외 핸들러로 설정합니다. 따라서 포착되지 않은 모든 예외는 Google 애널리틱스로 전송된 다음 포착되지 않은 이전의 예외 핸들러로 전달됩니다. 대부분의 애플리케이션에서는 기본 핸들러가 예외를 로그에 기록하고 애플리케이션을 종료합니다.
Thread.UncaughtExceptionHandler myHandler = new ExceptionReporter( myTracker, Thread.getDefaultUncaughtExceptionHandler(), context); // Make myHandler the new default uncaught exception handler. Thread.setDefaultUncaughtExceptionHandler(myHandler);
자동 예외 측정을 사용할 때는 다음 사항에 유의하세요.
- 자동 예외 측정을 사용하여 전송된 모든 예외는 Google 애널리틱스에서 심각한 것으로 보고됩니다.
- 기본적으로 설명 필드는 예외 유형, 클래스 이름, 메서드 이름, 스레드 이름을 사용하여 자동으로 설정됩니다.
파싱 예외 설명
SDK는 예외 설명을 가져와 Google 애널리틱스로 전송하는 프로세스를 간소화하는 StandardExceptionParser
를 제공합니다.
// Get tracker. Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker( TrackerName.APP_TRACKER); // Using StandardExceptionParser to get an Exception description. try { // Request some scores from the network. ArrayList<Integer> highScores = getHighScoresFromCloud(); } catch (IOException e) { t.send(new HitBuilders.ExceptionBuilder() .setDescription(new StandardExceptionParser(this, null) .getDescription(Thread.currentThread().getName(), e)) .setFatal(false) .build() ); ... // Display alert to user that high scores are currently unavailable. }
Google 애널리틱스로 예외를 전송할 때 ExceptionParser
인터페이스를 구현하고 setDescription
메서드를 호출하여 자체 파서를 구현할 수도 있습니다.