خرابی ها و استثناها - Android SDK

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

بررسی اجمالی

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

نام زمینه میدان ردیاب تایپ کنید ضروری شرح
شرح Fields.EX_DESCRIPTION String خیر شرح استثنا (حداکثر 100 کاراکتر). null می پذیرد.
کشنده است Fields.EX_FATAL boolean آره نشان می دهد که آیا استثنا کشنده بوده است یا خیر. true نشان دهنده کشنده است

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

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

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

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

/*
 * An app tries to load a list of high scores from the cloud. If the request
 * times out, an exception is sent to Google Analytics
 */
try {

  // Request some scores from the network.
  ArrayList highScores = getHighScoresFromCloud();

} catch (IOException e) {

  // May return null if EasyTracker has not yet been initialized with a
  // property ID.
  EasyTracker easyTracker = EasyTracker.getInstance(this);

  // StandardExceptionParser is provided to help get meaningful Exception descriptions.
 	easyTracker.send(MapBuilder
      .createException(new StandardExceptionParser(this, null)              // Context and optional collection of package names
                                                                            // to be used in reporting the exception.
                       .getDescription(Thread.currentThread().getName(),    // The name of the thread on which the exception occurred.
                                       e),                                  // The exception.
                       false)                                               // False indicates a nonfatal exception
      .build()
  );


  ... // 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 منتقل می‌کند.

با استفاده از یک پیاده سازی پیشرفته

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

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

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

UncaughtExceptionHandler myHandler = new ExceptionReporter(
    GoogleAnalytics.getInstance(this).getDefaultTracker(), // Tracker, may return null if not yet initialized.
    GAServiceManager.getInstance(),                        // GAServiceManager singleton.
    Thread.getDefaultUncaughtExceptionHandler());          // Current default uncaught exception handler.

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

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

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

تجزیه توضیحات استثنا

SDK یک StandardExceptionParser برای ساده‌سازی فرآیند دریافت و ارسال توضیحات استثنا به Google Analytics ارائه می‌کند:

// Using StandardExceptionParser to get an Exception description.
try {

  // Request some scores from the network.
  ArrayList highScores = getHighScoresFromCloud();

} catch (IOException e) {

  // May return null if EasyTracker has not yet been initialized with a
  // property ID.
  EasyTracker easyTracker = EasyTracker.getInstance(this);

 	easyTracker.send(MapBuilder
      .createException(new StandardExceptionParser(this, null)              // Context and optional collection of package names
                                                                            // to be used in reporting the exception.
                       .getDescription(Thread.currentThread().getName(),    // The name of the thread on which the exception occurred.
                                       e),                                  // The exception.
	                     false)                                               // False indicates a fatal exception
      .build()
  );

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

شما همچنین می توانید تجزیه کننده خود را با پیاده سازی رابط ExceptionParser و فراخوانی متد setDescription آن هنگام ارسال یک استثنا به Google Analytics پیاده سازی کنید.