קריסות וחריגים – Android SDK v2 (מדור קודם)

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

סקירה

מדידה של קריסות וחריגות מאפשרת למדוד את המספר והסוג של הקריסות והחריגים שלא נתפסו, שמתרחשות באפליקציה. החריגות ב-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.
}

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

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

שימוש ב-EasyMonitor

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

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

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

כשמשתמשים במדידה אוטומטית של חריגות, חשוב לזכור:

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

שימוש בדוח חריגות

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

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

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

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

שימוש ב-OutgoingParser

ה-SDK מספק ממשק ExceptionParser שאפשר להטמיע כדי לקבל את התיאורים הרלוונטיים ביותר מדוחות הקריסות כששולחים חריגים שלא זוהו ל-Google Analytics. בממשק ExceptionParser יש שיטה אחת: getDescription(String threadName, Throwable t).

תוכלו להגדיר את Tracker כך שישתמש ב-ExceptionParser כששולחים חריגים שלא זוהו ל-Google Analytics על ידי קריאה ל-setExceptionParser(ExceptionParser parser), כמו בדוגמה הבאה:

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

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

לאחר מכן, כלי המעקב ישתמש ב-method getDescription() של המנתח כדי לאכלס את שדה התיאור של חריגים שלא זוהו שנשלחו ל-Google Analytics.