ข้อขัดข้องและข้อยกเว้น - 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

การใช้ EasyTracker

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

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

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

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

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

การใช้ ExceptionReporter

ใช้คลาส ExceptionReporter เพื่อติดตั้งใช้งานการวัดข้อยกเว้นที่ตรวจไม่พบโดยอัตโนมัติหากไม่ได้ใช้ EasyTracker ซึ่งเป็นคลาสเดียวกับที่ 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);

การใช้ ExceptionParser

SDK มีอินเทอร์เฟซ ExceptionParser ที่คุณนำไปใช้เพื่อรับคำอธิบายที่เกี่ยวข้องมากที่สุดจากสแต็กเทรซเมื่อส่งข้อยกเว้นที่ตรวจไม่พบไปยัง Google Analytics ได้ อินเทอร์เฟซ ExceptionParser มี 1 วิธี ดังนี้ 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);

จากนั้นเครื่องมือติดตามจะใช้เมธอด getDescription() ของโปรแกรมแยกวิเคราะห์เพื่อสร้างช่องคำอธิบายของข้อยกเว้นที่ตรวจไม่พบซึ่งส่งไปยัง Google Analytics