Çökmeler ve İstisnalar

Bu belgede, Android için Google Analytics SDK v4 kullanılarak kilitlenme ve istisna ölçümüne genel bakış sunulmaktadır.

Genel bakış

Kilitlenme ve istisna ölçümü, uygulamanızda meydana gelen hem yakalanan hem yakalanmamış kilitlenmelerin ve istisnaların sayısını ve türünü ölçmenize olanak tanır. Aşağıdaki alanlar istisnadır:

Alan adı Tür Gerekli Açıklama
Açıklama String Hayır İstisnanın açıklaması (en fazla 100 karakter). null kabul edilir.
isFatal boolean Evet Özel durumun önemli olup olmadığını gösterir. true önemli değeri belirtir.

Kilitlenme ve istisna verileri, öncelikli olarak Kilitlenme ve İstisnalar raporunda bulunur.

Yakalanan İstisnalar

Yakalanan istisnalar (ör. veri isteği sırasında ağ bağlantısının ara sıra zaman aşımına uğraması), uygulamanızda işlemesi gereken kod uyguladığınız hatalardır.

İzleyicide istisna alanı değerlerini ayarlayıp isabeti göndererek yakalanan bir istisnayı ölçün (bu örnekte olduğu gibi):

// 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 yöntemi ile ilgili ayrıntılar için Gelişmiş Yapılandırma bölümüne bakın.

Yakalanmamış İstisna Ölçümü

Yakalanmayan istisnalar, uygulamanızın çalışma zamanında beklenmedik koşullarla karşılaştığı ve genellikle kritik öneme sahip olarak uygulamanın kilitlenmesine neden olduğu örnekleri temsil eder. ga_reportUncaughtExceptions yapılandırma değeri ayarlanarak veya ExceptionReporter sınıfı kullanılarak Google Analytics'e otomatik olarak yakalanmamış istisnalar gönderilebilir.

Otomatik Yapılandırma

Uygulamanızdaki tüm yakalanmamış istisnaları Google Analytics'e otomatik olarak göndermek için şu satırı XML yapılandırma dosyanıza ekleyin:

<bool name="ga_reportUncaughtExceptions">true</bool>

Otomatik istisna ölçümü kullanılarak istisna gönderildikten sonra, istisna Thread öğesinin varsayılan istisna işleyicisine aktarılır.

Gelişmiş Uygulama Kullanma

Gelişmiş bir uygulama kullanıyor ve ga_reportUncaughtExceptions yapılandırma değerini kullanmıyorsanız otomatik yakalanmamış istisna ölçümünü uygulamak için ExceptionReporter sınıfını kullanın.

ExceptionReporter, uygulamanızdaki belirli bir iş parçacığı veya tüm iş parçacıkları için varsayılan yakalanmamış istisna işleyici olarak işlev görebilir. Google Analytics'e bir istisna gönderdikten sonra, ExceptionReporter sınıfı isteğe bağlı olarak istisnayı, sağladığınız yakalanmamış bir istisna işleyiciye iletebilir.

Aşağıdaki kod yeni bir ExceptionReporter nesnesi oluşturur ve bunu yeni varsayılan yakalanmamış istisna işleyici olarak ayarlar. Sonuç olarak, yakalanmayan her istisna Google Analytics'e gönderilir ve ardından bir önceki yakalanmamış istisna işleyiciye aktarılır. Çoğu uygulamada, varsayılan işleyici istisnayı günlüğe kaydeder ve uygulamayı sonlandırır.

Thread.UncaughtExceptionHandler myHandler = new ExceptionReporter(
    myTracker,
    Thread.getDefaultUncaughtExceptionHandler(),
    context);

// Make myHandler the new default uncaught exception handler.
Thread.setDefaultUncaughtExceptionHandler(myHandler);

Otomatik istisna ölçümünü kullanırken aşağıdakileri göz önünde bulundurun:

  • Otomatik istisna ölçümü kullanılarak gönderilen tüm istisnalar Google Analytics'te önemli olarak raporlanır.
  • Varsayılan olarak açıklama alanı istisna türü, sınıf adı, yöntem adı ve iş parçacığı adı kullanılarak otomatik olarak ayarlanır.

Ayrıştırma İstisnası Açıklamaları

SDK, istisna açıklamalarını Google Analytics'e gönderme ve alma sürecini basitleştirmek için bir StandardExceptionParser sağlar:

// 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 Analytics'e bir istisna gönderirken ExceptionParser arayüzünü uygulayıp setDescription yöntemini çağırarak kendi ayrıştırıcınızı da uygulayabilirsiniz.