ข้อขัดข้องและข้อยกเว้น - Android SDK

เอกสารนี้แสดงภาพรวมระดับสูงของการวัดผลข้อขัดข้องและข้อยกเว้นโดยใช้ Google Analytics SDK สำหรับ Android v3

ภาพรวม

การวัดการขัดข้องและข้อยกเว้นช่วยให้คุณวัดจำนวนและประเภทของการขัดข้องที่เจอและไม่พบ รวมถึงข้อยกเว้นที่เกิดขึ้นในแอป โดยข้อยกเว้นจะมีช่องต่อไปนี้

ชื่อช่อง ฟิลด์เครื่องมือติดตาม ประเภท จำเป็น คำอธิบาย
คำอธิบาย Fields.EX_DESCRIPTION String ไม่ได้ คำอธิบายข้อยกเว้น (สูงสุด 100 อักขระ) ยอมรับ null
isFatal Fields.EX_FATAL boolean ได้ ระบุว่าข้อยกเว้นนี้เป็นข้อยกเว้นที่ร้ายแรงหรือไม่ true หมายถึงอันตรายถึงชีวิต

ข้อมูลข้อขัดข้องและข้อยกเว้นจะอยู่ในรายงานการขัดข้องและข้อยกเว้นเป็นหลัก

ข้อยกเว้นที่จับได้

ข้อยกเว้นที่พบคือข้อผิดพลาดในแอปที่คุณได้กำหนดโค้ดการจัดการข้อยกเว้น เช่น การหมดเวลาของการเชื่อมต่อเครือข่ายเป็นบางครั้งในระหว่างการขอข้อมูล

วัดข้อยกเว้นที่พบโดยการตั้งค่าช่องข้อยกเว้นในตัวติดตามและส่ง Hit ตามตัวอย่างนี้

/*
 * An app tries to load a list of high scores from the cloud. If the request
 * times out, an exception is sent to Google Analytics
 */
try {

  // Request some scores from the network.
  ArrayList highScores = getHighScoresFromCloud();

} catch (IOException e) {

  // May return null if EasyTracker has not yet been initialized with a
  // property ID.
  EasyTracker easyTracker = EasyTracker.getInstance(this);

  // StandardExceptionParser is provided to help get meaningful Exception descriptions.
 	easyTracker.send(MapBuilder
      .createException(new StandardExceptionParser(this, null)              // Context and optional collection of package names
                                                                            // to be used in reporting the exception.
                       .getDescription(Thread.currentThread().getName(),    // The name of the thread on which the exception occurred.
                                       e),                                  // The exception.
                       false)                                               // False indicates a nonfatal exception
      .build()
  );


  ... // Display alert to user that high scores are currently unavailable.
}

การวัดข้อยกเว้นที่ตรวจไม่พบ

ข้อยกเว้นที่ตรวจไม่พบจะแสดงถึงกรณีที่แอปพบสภาวะที่ไม่คาดคิดระหว่างรันไทม์และมักเป็นอันตรายถึงชีวิตซึ่งทำให้แอปขัดข้อง ระบบจะส่งข้อยกเว้นที่ตรวจไม่พบไปยัง Google Analytics โดยอัตโนมัติโดยใช้ EasyTracker หรือคลาส ExceptionReporter

การใช้ EasyTracker

หากต้องการส่งข้อยกเว้นที่ตรวจไม่พบทั้งหมดในแอปโดยอัตโนมัติโดยใช้ EasyTracker เพิ่มบรรทัดนี้ในไฟล์ analytics.xml ของคุณ:

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

หลังส่งข้อยกเว้นโดยใช้การวัดข้อยกเว้นอัตโนมัติแล้ว EasyTracker จะส่งข้อยกเว้นไปยังเครื่องจัดการข้อยกเว้นเริ่มต้นของ Thread

การใช้งานขั้นสูง

ใช้คลาส ExceptionReporter เพื่อติดตั้งใช้งานการวัดข้อยกเว้นที่ตรวจไม่พบโดยอัตโนมัติหากคุณใช้การติดตั้งใช้งานขั้นสูงและไม่ได้ใช้ EasyTracker

ExceptionReporter ทำหน้าที่เป็นเครื่องจัดการข้อยกเว้นเริ่มต้นที่ยังไม่ตรวจพบสำหรับเทรดที่เจาะจงหรือเทรดทั้งหมดในแอป หลังจากส่งข้อยกเว้นไปยัง Google Analytics แล้ว คลาส ExceptionReporter อาจส่งต่อข้อยกเว้นไปยังเครื่องจัดการข้อยกเว้นที่ตรวจไม่พบซึ่งคุณให้มา (ไม่บังคับ)

โค้ดต่อไปนี้จะสร้างออบเจ็กต์ ExceptionReporter ใหม่และตั้งค่าเป็นเครื่องจัดการข้อยกเว้นที่ไม่ถูกตรวจจับเริ่มต้นใหม่ ดังนั้น ระบบจะส่งข้อยกเว้นทั้งหมดที่ตรวจไม่พบไปยัง Google Analytics แล้วส่งต่อไปยังเครื่องจัดการข้อยกเว้นที่ตรวจไม่พบก่อนหน้านี้ สำหรับแอปพลิเคชันส่วนใหญ่ ตัวแฮนเดิลเริ่มต้นจะบันทึกข้อยกเว้นในบันทึกและยุติแอปพลิเคชัน

UncaughtExceptionHandler myHandler = new ExceptionReporter(
    GoogleAnalytics.getInstance(this).getDefaultTracker(), // Tracker, may return null if not yet initialized.
    GAServiceManager.getInstance(),                        // GAServiceManager singleton.
    Thread.getDefaultUncaughtExceptionHandler());          // Current default uncaught exception handler.

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

เมื่อใช้การวัดข้อยกเว้นอัตโนมัติ โปรดคํานึงถึงสิ่งต่อไปนี้

  • ข้อยกเว้นทั้งหมดที่ส่งโดยใช้การวัดข้อยกเว้นอัตโนมัติจะรายงานเป็นข้อผิดพลาดร้ายแรงใน Google Analytics
  • โดยค่าเริ่มต้น ระบบจะตั้งค่าช่องคำอธิบายโดยอัตโนมัติโดยใช้ประเภทข้อยกเว้น ชื่อคลาส ชื่อเมธอด และชื่อชุดข้อความ

คำอธิบายข้อยกเว้นของการแยกวิเคราะห์

SDK นี้มอบ StandardExceptionParser เพื่อช่วยให้ขั้นตอนการรับและส่งคำอธิบายข้อยกเว้นไปยัง Google Analytics ง่ายขึ้น

// Using StandardExceptionParser to get an Exception description.
try {

  // Request some scores from the network.
  ArrayList highScores = getHighScoresFromCloud();

} catch (IOException e) {

  // May return null if EasyTracker has not yet been initialized with a
  // property ID.
  EasyTracker easyTracker = EasyTracker.getInstance(this);

 	easyTracker.send(MapBuilder
      .createException(new StandardExceptionParser(this, null)              // Context and optional collection of package names
                                                                            // to be used in reporting the exception.
                       .getDescription(Thread.currentThread().getName(),    // The name of the thread on which the exception occurred.
                                       e),                                  // The exception.
	                     false)                                               // False indicates a fatal exception
      .build()
  );

  ... // Display alert to user that high scores are currently unavailable.
}

คุณยังใช้โปรแกรมแยกวิเคราะห์ของตนเองโดยการใช้อินเทอร์เฟซ ExceptionParser และเรียกเมธอด setDescription ของตัวแยกวิเคราะห์นั้นเมื่อส่งข้อยกเว้นไปยัง Google Analytics ได้ด้วย