ক্র্যাশ এবং ব্যতিক্রম - Android SDK v2 (উত্তরাধিকার)

এই নথিটি Android v2 এর জন্য Google Analytics SDK ব্যবহার করে ক্র্যাশ এবং ব্যতিক্রম পরিমাপের একটি উচ্চ-স্তরের ওভারভিউ প্রদান করে।

ওভারভিউ

ক্র্যাশ এবং ব্যতিক্রম পরিমাপ আপনাকে আপনার অ্যাপ্লিকেশানে ধরা পড়া এবং ধরা না পড়া ক্র্যাশ এবং ব্যতিক্রমগুলির সংখ্যা এবং ধরন পরিমাপ করতে দেয়৷ গুগল অ্যানালিটিক্সে একটি ব্যতিক্রম রয়েছে:

  • String (ঐচ্ছিক) বর্ণনা – ব্যতিক্রমের একটি বিবরণ (100টি অক্ষর পর্যন্ত)। null গ্রহণ করে।
  • boolean ইজ ফেটাল - নির্দেশ করে যে ব্যতিক্রমটি মারাত্মক ছিল কিনা। 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 ব্যবহার করে স্বয়ংক্রিয়ভাবে আপনার অ্যাপে ধরা না পড়া সব ব্যতিক্রমগুলি পাঠাতে, এই লাইনটি আপনার analytics.xml ফাইলে যোগ করুন:

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

স্বয়ংক্রিয় ব্যতিক্রম পরিমাপ ব্যবহার করে একটি ব্যতিক্রম পাঠানোর পরে, EasyTracker ব্যতিক্রমটি Thread ডিফল্ট ব্যতিক্রম হ্যান্ডলারে প্রেরণ করবে।

স্বয়ংক্রিয় ব্যতিক্রম পরিমাপ ব্যবহার করার সময়, নিম্নলিখিতগুলি মনে রাখবেন:

  • স্বয়ংক্রিয় ব্যতিক্রম পরিমাপ ব্যবহার করে পাঠানো সমস্ত ব্যতিক্রম Google Analytics-এ মারাত্মক হিসাবে রিপোর্ট করা হয়েছে।
  • বর্ণনা ক্ষেত্রটি স্ট্যাক ট্রেস ব্যবহার করে স্বয়ংক্রিয়ভাবে জনবহুল হয়।

ব্যতিক্রম রিপোর্টার ব্যবহার করে

আপনি EasyTracker ব্যবহার না করলে স্বয়ংক্রিয়ভাবে ধরা না পড়া ব্যতিক্রম পরিমাপ বাস্তবায়ন করতে ExceptionReporter ক্লাস ব্যবহার করুন। এটি একই ক্লাস যা ইজিট্র্যাকার তার স্বয়ংক্রিয় ব্যতিক্রম রিপোর্টিং পরিচালনা করতে প্রয়োগ করে।

ExceptionReporter হয় একটি নির্দিষ্ট থ্রেড বা আপনার অ্যাপের সমস্ত থ্রেডের জন্য ডিফল্ট অপ্রকাশিত ব্যতিক্রম হ্যান্ডলার হিসাবে কাজ করতে পারে। Google Analytics-এ একটি ব্যতিক্রম পাঠানোর পর, ExceptionReporter ক্লাস ঐচ্ছিকভাবে ব্যতিক্রমটি আপনার প্রদান করা কোনো ধরা না পড়া ব্যতিক্রম হ্যান্ডলারের কাছে পাঠাতে পারে।

নিম্নলিখিত কোডটি একটি নতুন ExceptionReporter অবজেক্ট তৈরি করে এবং এটিকে নতুন ডিফল্ট না ধরা ব্যতিক্রম হ্যান্ডলার হিসাবে সেট করে। ফলস্বরূপ, প্রতিটি ধরা না পড়া ব্যতিক্রম Google অ্যানালিটিক্সে পাঠানো হবে এবং তারপরে পূর্বের ধরা না পড়া ব্যতিক্রম হ্যান্ডলারের কাছে পাঠানো হবে। বেশিরভাগ অ্যাপ্লিকেশনের জন্য, ডিফল্ট হ্যান্ডলার লগের ব্যতিক্রমটি লগ করবে এবং অ্যাপ্লিকেশনটি বন্ধ করে দেবে।

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 ইন্টারফেসের একটি পদ্ধতি রয়েছে: getDescription(String threadName, Throwable t)

আপনি এই উদাহরণের মতো setExceptionParser(ExceptionParser parser) কল করে Google Analytics-এ ধরা পড়া ব্যতিক্রমগুলি পাঠানোর সময় আপনার ExceptionParser ব্যবহার করার জন্য আপনার Tracker সেট করতে পারেন:

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

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

আপনার ট্র্যাকার তারপর Google Analytics-এ প্রেরিত কোনো ধরা না পড়া ব্যতিক্রমের বিবরণ ক্ষেত্রটি পূরণ করতে আপনার পার্সারের getDescription() পদ্ধতি ব্যবহার করবে।