קריסות וחריגות

במסמך הזה מפורטת סקירה כללית ברמה גבוהה לגבי מדידת קריסות וחריגות באמצעות Google Analytics SDK v4 ל-Android.

סקירה

מדידת הקריסות והחריגות מאפשרת למדוד את המספר והסוג של הקריסות שתועדו והחריגות, ומקרים חריגים שלא זוהו, שמתרחשות באפליקציה. יוצאים מן הכלל כוללים את השדות הבאים:

שם השדה סוג חובה תיאור
תיאור String לא תיאור של החריג (עד 100 תווים). מכבדים null.
isFatal 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 זמינים במאמר הגדרות מתקדמות.

מדידת חריגה שלא נתפסה

חריגים שלא תועדו מייצגים מקרים שבהם האפליקציה נתקלה בתנאים לא צפויים בזמן הריצה. לרוב הם חמורים מאוד וגורמים לקריסה של האפליקציה. ניתן לשלוח ל-Google Analytics חריגים שלא זוהו באופן אוטומטי, על ידי הגדרת ערך ההגדרה ga_reportUncaughtExceptions או באמצעות המחלקה ExceptionReporter.

הגדרה אוטומטית

כדי לשלוח באופן אוטומטי ל-Google Analytics את כל החריגים באפליקציה שלא זוהו, מוסיפים את השורה הבאה לקובץ התצורה ב-XML:

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

אחרי שליחת החריג באמצעות מדידה אוטומטית של חריגים, החריגה תועבר ל-handler של החריג שמוגדר כברירת מחדל של Thread.

שימוש בהטמעה מתקדמת

אם אתם משתמשים בהטמעה מתקדמת ולא משתמשים בערך ההגדרה ga_reportUncaughtExceptions, השתמשו במחלקה ExceptionReporter כדי להטמיע מדידה אוטומטית של חריגים שלא נתפסו.

ExceptionReporter יכול לשמש כ-handler של חריג שלא נתפס כברירת מחדל ל-thread ספציפי או לכל ה-threads באפליקציה. אחרי שליחת חריג ל-Google Analytics, המחלקה ExceptionReporter יכולה באופן אופציונלי להעביר את החריגה ל-handler שלא נתפס על ידך.

הקוד הבא יוצר אובייקט ExceptionReporter חדש ומגדיר אותו כ-handler של החריגה שלא נתפס כברירת מחדל. כתוצאה מכך, כל חריגות שלא נתפסו יישלחו אל Google Analytics ולאחר מכן יועברו ל-handler החריג הקודם שלא נתפס. ברוב האפליקציות, ה-handler שמוגדר כברירת מחדל ירשום את החריגה ביומן ויסגור את האפליקציה.

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.