تصادفات و استثنائات

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

بررسی اجمالی

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

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

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

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

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

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

// 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 به تنظیمات پیشرفته مراجعه کنید.

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

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

پیکربندی خودکار

برای ارسال خودکار همه استثناهای کشف نشده در برنامه خود به Google Analytics، این خط را به فایل پیکربندی XML خود اضافه کنید:

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

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

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

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

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

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

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

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

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

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

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

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

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

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