خرابی ها و استثناها - Android SDK نسخه 2 (قدیمی)

این سند نمای کلی سطح بالایی از اندازه‌گیری خرابی و استثنا را با استفاده از Google Analytics SDK برای Android نسخه ۲ ارائه می‌کند.

بررسی اجمالی

اندازه‌گیری خرابی و استثنا به شما امکان می‌دهد تعداد و نوع خرابی‌ها و موارد استثنایی را که در برنامه شما رخ می‌دهد، اندازه‌گیری کنید. یک استثنا در Google Analytics شامل موارد زیر است:

  • شرح String (اختیاری) - شرح استثنا (حداکثر 100 کاراکتر). null می پذیرد.
  • boolean isFatal - نشان می دهد که آیا استثنا کشنده بوده است یا خیر. true نشان دهنده کشنده است

داده‌های خرابی و استثنا عمدتاً در گزارش خرابی و استثناء موجود است.

گرفتار استثنا

استثناهای یافت شده خطاهایی در برنامه شما هستند که کد مدیریت استثنا را برای آنها تعریف کرده اید. اینها معمولاً خطاهایی هستند که پیش‌بینی می‌کنید در طول استفاده عادی از برنامه‌تان رخ دهند و می‌خواهید برنامه‌تان بتواند از آن‌ها بازیابی شود، مانند وقفه زمانی اتصال شبکه در طول درخواست داده.

می‌توانید استثناهای گرفته شده را با افزودن sendException() به بلوک catch کد مدیریت استثنا خود اندازه‌گیری کنید.

در مثال زیر، یک برنامه سعی می کند لیستی از امتیازات بالا را از ابر بارگذاری کند. اگر زمان درخواست به پایان برسد، شاید به دلیل کندی اتصال شبکه، ما استثنا را قبل از رسیدگی به آن برای کاربر به Google Analytics ارسال می‌کنیم:

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

اندازه‌گیری استثنای کشف نشده

استثناهای کشف نشده مواردی را نشان می دهند که برنامه شما در زمان اجرا با شرایط غیرمنتظره ای مواجه می شود و اغلب کشنده است و در نتیجه برنامه از کار می افتد. استثناهای کشف نشده را می توان با استفاده از EasyTracker یا کلاس ExceptionReporter به طور خودکار به Google Analytics ارسال کرد.

با استفاده از EasyTracker

برای ارسال خودکار همه استثناهای کشف نشده در برنامه خود با استفاده از EasyTracker، این خط را به فایل analytics.xml خود اضافه کنید:

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

پس از ارسال یک استثنا با استفاده از اندازه‌گیری خودکار استثنا، EasyTracker استثنا را به کنترل‌کننده استثنا پیش‌فرض Thread منتقل می‌کند.

هنگام استفاده از اندازه گیری استثنای خودکار، موارد زیر را در نظر داشته باشید:

  • همه استثناهای ارسال شده با استفاده از اندازه گیری استثنای خودکار به عنوان مرگبار در Google Analytics گزارش می شوند.
  • قسمت توضیحات به طور خودکار با استفاده از ردیابی پشته پر می شود.

با استفاده از ExceptionReporter

اگر از EasyTracker استفاده نمی‌کنید، از کلاس ExceptionReporter برای پیاده‌سازی اندازه‌گیری خودکار استثناء غیرقابل استفاده استفاده کنید. این همان کلاسی است که EasyTracker برای رسیدگی به گزارش‌های استثنایی خودکار خود پیاده‌سازی می‌کند.

ExceptionReporter می‌تواند به‌عنوان کنترل‌کننده استثنای غیرقابل پیش‌فرض برای یک رشته خاص یا همه رشته‌های موجود در برنامه شما باشد. پس از ارسال یک استثنا به Google Analytics، کلاس ExceptionReporter می‌تواند به صورت اختیاری استثنا را به یک کنترل‌کننده استثنا که شما ارائه می‌دهید منتقل کند.

کد زیر یک شی ExceptionReporter جدید ایجاد می‌کند و آن را به عنوان کنترل‌کننده استثنای پیش‌فرض جدید تعیین می‌کند. در نتیجه، هر استثنای کشف نشده به Google Analytics ارسال می‌شود و سپس به کنترل‌کننده استثنای قبلی منتقل می‌شود. برای اکثر برنامه‌ها، کنترل‌کننده پیش‌فرض، استثنا را در گزارش ثبت می‌کند و برنامه را خاتمه می‌دهد.

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

SDK یک رابط ExceptionParser ارائه می‌کند که می‌توانید برای دریافت مرتبط‌ترین توضیحات از ردیابی‌های پشته خود در هنگام ارسال استثناهای کشف نشده به Google Analytics، پیاده‌سازی کنید. واسط ExceptionParser یک روش دارد: getDescription(String threadName, Throwable t) .

می‌توانید با فراخوانی setExceptionParser(ExceptionParser parser) مانند این مثال، Tracker خود را طوری تنظیم کنید که از ExceptionParser شما هنگام ارسال استثناهای کشف نشده به Google Analytics استفاده کند:

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

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

ردیاب شما سپس از متد getDescription() تجزیه کننده شما برای پر کردن فیلد توضیحات هر استثنای غیرقابل کشف ارسال شده به Google Analytics استفاده می کند.