क्रैश और अपवाद

यह दस्तावेज़ Android के लिए Google Analytics SDK v4 का इस्तेमाल करके क्रैश और अपवाद मेज़रमेंट की खास जानकारी देता है.

खास जानकारी

क्रैश और अपवाद मेज़रमेंट की मदद से यह मेज़र किया जा सकता है कि आपके ऐप्लिकेशन में, पकड़े गए और नहीं पढ़े गए क्रैश की संख्या कितनी है और उनका टाइप क्या है. अपवाद के तौर पर ये फ़ील्ड होते हैं:

फ़ील्ड का नाम टाइप ज़रूरी है ब्यौरा
ब्यौरा 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 में अपने-आप भेजने के लिए, जिनकी पहचान नहीं हुई है, इस लाइन को अपनी एक्सएमएल कॉन्फ़िगरेशन फ़ाइल में जोड़ें:

<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 में 'घातक' के तौर पर रिपोर्ट किया जाता है.
  • डिफ़ॉल्ट रूप से, ब्यौरा फ़ील्ड अपवाद के टाइप, क्लास का नाम, तरीके का नाम, और थ्रेड के नाम का इस्तेमाल करके अपने-आप सेट हो जाता है.

अपवाद के ब्यौरे पार्स करना

Google Analytics को अपवाद के तौर पर मौजूद जानकारी पाने और भेजने की प्रोसेस को आसान बनाने के लिए, SDK टूल में StandardExceptionParser मौजूद है:

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

Google Analytics को अपवाद भेजते समय, ExceptionParser इंटरफ़ेस लागू करके और उसके setDescription तरीके को कॉल करके, अपना पार्सर भी लागू किया जा सकता है.