क्रैश और अपवाद - Android SDK v2 (लेगसी)

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

खास जानकारी

क्रैश और अपवाद मेज़रमेंट की मदद से, अपने ऐप्लिकेशन में होने वाले क्रैश और अपवादों की संख्या और टाइप को मेज़र किया जा सकता है. साथ ही, Google Analytics के अपवाद में ये शामिल हैं:

  • String (ज़रूरी नहीं) ब्यौरा – अपवाद का ब्यौरा (ज़्यादा से ज़्यादा 100 वर्ण). null .
  • boolean isFatal – यह बताता है कि अपवाद गंभीर था या नहीं. true जानलेवा होता है.

क्रैश और अपवाद से जुड़ा डेटा मुख्य रूप से, क्रैश और अपवाद से जुड़ी रिपोर्ट में उपलब्ध होता है.

अपवाद

अपवाद के तौर पर लागू होने वाले अपवाद, आपके ऐप्लिकेशन में मौजूद वे गड़बड़ियां होती हैं जिनके लिए आपने अपवाद हैंडलिंग कोड तय किया है. आम तौर पर, ये गड़बड़ियां होती हैं. इनका इस्तेमाल ऐप्लिकेशन के सामान्य इस्तेमाल के दौरान होना चाहिए. साथ ही, आपको ऐप्लिकेशन को वापस पाना है, जैसे कि डेटा पाने का अनुरोध करने के दौरान, कभी-कभी नेटवर्क कनेक्शन का बंद हो जाना.

अपने अपवाद हैंडलिंग कोड के catch ब्लॉक में sendException() जोड़कर, पकड़े गए अपवादों को मेज़र किया जा सकता है.

यहां दिए गए उदाहरण में, एक ऐप्लिकेशन क्लाउड से सबसे ज़्यादा स्कोर की सूची लोड करने की कोशिश करता है. अगर नेटवर्क कनेक्शन धीमा होने की वजह से, अनुरोध का समय खत्म हो जाता है, तो उपयोगकर्ता को हैंडल करने से पहले हम 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.
}

अपवाद के बारे में पता नहीं चलने वाला मेज़रमेंट

अपवाद के तौर पर, आपके ऐप्लिकेशन में ऐसी स्थितियां दिखती हैं जब रनटाइम के दौरान ऐप्लिकेशन में कोई गड़बड़ी हुई हो. यह अक्सर जानलेवा होता है, जिसकी वजह से ऐप्लिकेशन क्रैश हो जाता है. EasyTracker या ExceptionReporter क्लास का इस्तेमाल करके, बिना मिले अपवाद के तौर पर Google Analytics को अपने-आप भेजा जा सकता है.

EasyTracker का इस्तेमाल करना

EasyTracker का इस्तेमाल करके, नहीं पाए गए सभी अपवादों को अपने-आप भेजने के लिए, अपनी analytics.xml फ़ाइल में यह लाइन जोड़ें:

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

अपने-आप अपवाद को मापने की सुविधा का इस्तेमाल करके अपवाद भेजने के बाद, EasyTracker, अपवाद को Thread के डिफ़ॉल्ट अपवाद हैंडलर को पास कर देगा.

अपवाद के अपने-आप लागू होने वाले मेज़रमेंट का इस्तेमाल करते समय, इन बातों का ध्यान रखें:

  • अपवाद के अपने-आप मेज़रमेंट की सुविधा का इस्तेमाल करके भेजे गए सभी अपवादों को Google Analytics में 'घातक' के तौर पर रिपोर्ट किया जाता है.
  • ब्यौरे वाले फ़ील्ड में स्टैक ट्रेस का इस्तेमाल करके अपने-आप जानकारी भर जाती है.

अपवादरिपोर्ट का इस्तेमाल करना

अगर EasyTracker का इस्तेमाल नहीं किया जा रहा है, तो अपने-आप पकड़ में न आने वाले अपवाद के मेज़रमेंट को लागू करने के लिए, ExceptionReporter क्लास का इस्तेमाल करें. यह वही क्लास है जिसे EasyTracker अपनी अपवाद रिपोर्टिंग को मैनेज करने के लिए लागू करता है.

किसी खास थ्रेड या आपके ऐप्लिकेशन में सभी थ्रेड के लिए, ExceptionReporter डिफ़ॉल्ट रूप से नहीं पढ़े गए अपवाद हैंडलर के तौर पर काम कर सकता है. Google Analytics को अपवाद भेजने के बाद, ExceptionReporter क्लास किसी ऐसे अपवाद हैंडलर को भेज सकती है जो आपको नहीं मिला है.

यह कोड, एक नया ExceptionReporter ऑब्जेक्ट बनाता है. साथ ही, इसे पता लगाए गए अपवाद के नए डिफ़ॉल्ट हैंडलर के तौर पर सेट करता है. इस वजह से, कैप्चर नहीं किए गए सभी अपवाद Google Analytics को भेजे जाएंगे. इसके बाद, उन्हें वापस नहीं पाए गए अपवाद के पिछले हैंडलर को भेज दिया जाएगा. ज़्यादातर ऐप्लिकेशन के लिए, डिफ़ॉल्ट हैंडलर लॉग के अपवाद को लॉग करेगा और ऐप्लिकेशन को बंद कर देगा.

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

ResponseParser का इस्तेमाल करना

SDK टूल से ExceptionParser इंटरफ़ेस मिलता है. इसे Google Analytics को अपवाद भेजते समय, अपने स्टैक ट्रेस से सबसे काम की जानकारी पाने के लिए लागू किया जा सकता है. ExceptionParser इंटरफ़ेस का एक तरीका है: getDescription(String threadName, Throwable t).

इस उदाहरण में बताए गए तरीके से setExceptionParser(ExceptionParser parser) को कॉल करके, Google Analytics को ऐसे अपवाद भेजते समय अपने Tracker को ExceptionParser का इस्तेमाल करने के लिए सेट किया जा सकता है जिसकी पहचान नहीं हुई है:

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

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

इसके बाद, आपका ट्रैकर आपके पार्सर के getDescription() तरीके का इस्तेमाल करके, Google Analytics को भेजे गए ऐसे अपवादों के ब्यौरे वाले फ़ील्ड को भर देगा जिन्हें पहचाना नहीं जा सका.