Sự cố và ngoại lệ – SDK Android phiên bản 2 (Cũ)

Tài liệu này cung cấp thông tin tổng quan cấp cao về hoạt động đo lường sự cố và ngoại lệ bằng cách sử dụng SDK Google Analytics cho Android phiên bản 2.

Tổng quan

Tính năng đo lường sự cố và ngoại lệ cho phép bạn đo lường số lượng và loại sự cố đã phát hiện và chưa phát hiện, cũng như ngoại lệ xảy ra trong ứng dụng. Một trường hợp ngoại lệ trong Google Analytics bao gồm:

  • String (Không bắt buộc) Nội dung mô tả – nội dung mô tả về trường hợp ngoại lệ (tối đa 100 ký tự). Chấp nhận null .
  • boolean isFatal – cho biết liệu ngoại lệ có nghiêm trọng hay không. true cho biết lỗi nghiêm trọng.

Dữ liệu về sự cố và ngoại lệ chủ yếu có trong báo cáo Sự cố và ngoại lệ.

Ngoại lệ đã phát hiện

Ngoại lệ bị phát hiện là các lỗi trong ứng dụng mà bạn đã xác định mã xử lý ngoại lệ. Đây thường là những lỗi mà bạn có thể sẽ xảy ra trong quá trình sử dụng ứng dụng bình thường và khi đó bạn muốn ứng dụng của mình có thể khôi phục, chẳng hạn như thời gian chờ thỉnh thoảng của kết nối mạng trong khi yêu cầu dữ liệu.

Bạn có thể đo lường các trường hợp ngoại lệ đã phát hiện bằng cách thêm sendException() vào khối catch của mã xử lý ngoại lệ.

Trong ví dụ sau, một ứng dụng cố gắng tải danh sách điểm cao từ đám mây. Nếu yêu cầu hết thời gian chờ, có thể do kết nối mạng chậm, chúng tôi sẽ gửi ngoại lệ cho Google Analytics trước khi xử lý yêu cầu đó cho người dùng:

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.
}

Đo lường ngoại lệ chưa nắm bắt

Các ngoại lệ chưa phát hiện được biểu thị các trường hợp mà ứng dụng của bạn gặp phải những điều kiện không mong muốn trong thời gian chạy và thường nghiêm trọng, khiến ứng dụng gặp sự cố. Bạn có thể tự động gửi các trường hợp ngoại lệ chưa phát hiện được đến Google Analytics bằng cách sử dụng EasyTracker hoặc lớp ExceptionReporter.

Sử dụng EasyTracker

Để tự động gửi tất cả các trường hợp ngoại lệ chưa nắm bắt được trong ứng dụng của bạn bằng EasyTracker, hãy thêm dòng này vào tệp analytics.xml của bạn:

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

Sau khi gửi một ngoại lệ bằng tính năng tự động đo lường ngoại lệ, EasyTracker sẽ chuyển ngoại lệ sang trình xử lý ngoại lệ mặc định của Thread.

Khi sử dụng tính năng tự động đo lường ngoại lệ, hãy lưu ý những điều sau:

  • Tất cả các trường hợp ngoại lệ được gửi bằng tính năng tự động đo lường ngoại lệ đều được báo cáo là nghiêm trọng trong Google Analytics.
  • Trường nội dung mô tả được điền tự động bằng cách sử dụng dấu vết ngăn xếp.

Sử dụng ExceptionReporter

Sử dụng lớp ExceptionReporter để triển khai chế độ đo lường ngoại lệ chưa nắm bắt tự động nếu bạn không sử dụng EasyTracker. Đây cũng chính là lớp mà EasyTracker triển khai để xử lý báo cáo ngoại lệ tự động.

ExceptionReporter có thể đóng vai trò là trình xử lý ngoại lệ chưa nắm bắt mặc định cho một luồng cụ thể hoặc tất cả các luồng trong ứng dụng của bạn. Sau khi gửi một ngoại lệ đến Google Analytics, lớp ExceptionReporter có thể tuỳ ý chuyển trường hợp ngoại lệ tới trình xử lý ngoại lệ chưa nắm bắt mà bạn cung cấp.

Mã sau đây sẽ tạo một đối tượng ExceptionReporter mới và đặt đối tượng đó làm trình xử lý ngoại lệ chưa nắm bắt mới mặc định. Do đó, mọi ngoại lệ chưa nắm bắt sẽ được gửi đến Google Analytics, sau đó chuyển đến trình xử lý ngoại lệ chưa nắm bắt trước đó. Đối với hầu hết ứng dụng, trình xử lý mặc định sẽ ghi ngoại lệ vào nhật ký và chấm dứt ứng dụng.

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);

Sử dụng ExceptionParser

SDK này cung cấp giao diện ExceptionParser mà bạn có thể triển khai để nhận được nội dung mô tả phù hợp nhất từ dấu vết ngăn xếp khi gửi các trường hợp ngoại lệ chưa nắm bắt được đến Google Analytics. Giao diện ExceptionParser có một phương thức: getDescription(String threadName, Throwable t).

Bạn có thể đặt Tracker để sử dụng ExceptionParser khi gửi các trường hợp ngoại lệ chưa nắm bắt được đến Google Analytics bằng cách gọi setExceptionParser(ExceptionParser parser) như trong ví dụ sau:

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

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

Sau đó, Công cụ theo dõi sẽ sử dụng phương thức getDescription() của trình phân tích cú pháp để điền vào trường mô tả về mọi trường hợp ngoại lệ chưa được nắm bắt được gửi đến Google Analytics.