Kilitlenmeler ve İstisnalar - Android SDK v2 (Eski)

Bu belgede, Android v2 için Google Analytics SDK'sı kullanılarak kilitlenme ve istisna ölçümüne yüksek düzey bir genel bakış sunulmaktadır.

Genel bakış

Kilitlenme ve istisna ölçümü, uygulamanızda meydana gelen hem yakalanan hem de yakalanmamış kilitlenmelerin ve istisnaların sayısını ve türünü ölçmenize olanak tanır. Google Analytics'te aşağıdaki istisnalar söz konusudur:

  • String (İsteğe bağlı) Açıklama – istisnanın açıklaması (en fazla 100 karakter). null kabul edilir.
  • boolean isFatal: İstisnanın ö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, uygulamanızda istisna işleme kodu tanımladığınız hatalardır. Bunlar genellikle, veri isteği sırasında ağ bağlantısının zaman zaman aşımına uğraması gibi, uygulamanızın normal kullanımı sırasında oluşmasını beklediğiniz ve uygulamanızın kurtarılmasını istediğiniz hatalardır.

Yakalanan istisnaları, istisna işleme kodunuzun catch bloğuna sendException() ekleyerek ölçebilirsiniz.

Aşağıdaki örnekte bir uygulama, buluttan yüksek puanların bir listesini yüklemeye çalışıyor. İstek zaman aşımına uğrarsa (örneğin, yavaş bir ağ bağlantısı nedeniyle), istisnayı kullanıcı için işlemeden önce Google Analytics'e göndeririz:

try {
  ArrayList highScores = getHighScores();            // Get scores from the cloud.
} catch (IOException e) {
  Tracker myTracker = EasyTracker.getTracker();      // Get a reference to tracker.
  myTracker.sendException(e.getMessage(), false);    // false indicates non-fatal exception.

  ... // Display alert to user that high scores are currently unavailable.
}

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. EasyTracker veya ExceptionReporter sınıfı kullanılarak Google Analytics'e otomatik olarak yakalanmamış istisnalar gönderilebilir.

EasyTracker'ı kullanma

EasyTracker'ı kullanarak uygulamanızdaki yakalanmamış tüm istisnaları otomatik olarak göndermek için şu satırı analytics.xml dosyanıza ekleyin:

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

Otomatik istisna ölçümünü kullanarak bir istisna gönderdikten sonra, EasyTracker, istisnayı Thread öğesinin varsayılan istisna işleyicisine iletir.

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.
  • Açıklama alanı, yığın izleme (stack trace) kullanılarak otomatik olarak doldurulur.

ExceptionReporter'ı kullanma

EasyTracker kullanmıyorsanız otomatik yakalanmamış istisna ölçümünü uygulamak için ExceptionReporter sınıfını kullanın. Bu, EasyTracker'ın otomatik istisna raporlamasını işlemek için uyguladığı sınıftır.

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.

UncaughtExceptionHandler myHandler = new ExceptionReporter(
    myTracker,                                        // Currently used Tracker.
    GAServiceManager.getInstance(),                   // GAServiceManager singleton.
    Thread.getDefaultUncaughtExceptionHandler());     // Current default uncaught exception handler.

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

ExceptionParser'ı kullanma

SDK, Google Analytics'e yakalanmamış istisnalar gönderirken yığın izlerinizden en alakalı açıklamaları almak için uygulayabileceğiniz bir ExceptionParser arayüzü sağlar. ExceptionParser arayüzünde tek bir yöntem bulunur: getDescription(String threadName, Throwable t).

Tracker öğenizi, aşağıdaki örnekte olduğu gibi setExceptionParser(ExceptionParser parser) çağrısı yaparak Google Analytics'e yakalanmamış istisnalar gönderirken ExceptionParser öğenizi kullanacak şekilde ayarlayabilirsiniz:

// Where myParser represents your implementation of ExceptionParser.
ExceptionParser parser = new myParser(context);

// Where myTracker is an instance of Tracker.
myTracker.setExceptionParser(parser);

Daha sonra Tracker'ınız, Google Analytics'e gönderilen yakalanmamış istisnaların açıklama alanını doldurmak için ayrıştırıcınızın getDescription() yöntemini kullanır.