ক্র্যাশ এবং ব্যতিক্রম - Android SDK

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

ওভারভিউ

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

ক্ষেত্র নাম ট্র্যাকার ক্ষেত্র টাইপ প্রয়োজন বর্ণনা
বর্ণনা Fields.EX_DESCRIPTION String না ব্যতিক্রমের বিবরণ (100টি অক্ষর পর্যন্ত)। null গ্রহণ করে।
মারাত্মক Fields.EX_FATAL boolean হ্যাঁ ব্যতিক্রম মারাত্মক ছিল কিনা তা নির্দেশ করে। true মারাত্মক নির্দেশ করে।

ক্র্যাশ এবং ব্যতিক্রম ডেটা প্রাথমিকভাবে ক্র্যাশ এবং ব্যতিক্রম রিপোর্টে পাওয়া যায়।

ধরা ব্যতিক্রম

ধরা ব্যতিক্রমগুলি হল আপনার অ্যাপের ত্রুটি যার জন্য আপনি ব্যতিক্রম হ্যান্ডলিং কোড সংজ্ঞায়িত করেছেন, যেমন ডেটার অনুরোধের সময় একটি নেটওয়ার্ক সংযোগের মাঝে মাঝে টাইমআউট।

ট্র্যাকারে ব্যতিক্রম ক্ষেত্রের মান সেট করে এবং হিট পাঠানোর মাধ্যমে একটি ধরা ব্যতিক্রম পরিমাপ করুন, যেমন এই উদাহরণে:

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

অপ্রকাশিত ব্যতিক্রম পরিমাপ

ধরা না পড়া ব্যতিক্রমগুলি এমন উদাহরণগুলিকে উপস্থাপন করে যেখানে আপনার অ্যাপটি রানটাইমে অপ্রত্যাশিত পরিস্থিতির সম্মুখীন হয়েছে এবং প্রায়শই মারাত্মক হয়, যার ফলে অ্যাপটি ক্র্যাশ হয়ে যায়। EasyTracker বা ExceptionReporter ক্লাস ব্যবহার করে অনাক্ষিত ব্যতিক্রমগুলি স্বয়ংক্রিয়ভাবে Google Analytics-এ পাঠানো যেতে পারে।

ইজিট্র্যাকার ব্যবহার করা

EasyTracker ব্যবহার করে স্বয়ংক্রিয়ভাবে আপনার অ্যাপে ধরা না পড়া সব ব্যতিক্রমগুলি পাঠাতে, এই লাইনটি আপনার analytics.xml ফাইলে যোগ করুন:

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

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

একটি উন্নত বাস্তবায়ন ব্যবহার করে

আপনি যদি একটি উন্নত বাস্তবায়ন ব্যবহার করেন এবং EasyTracker ব্যবহার না করেন তাহলে স্বয়ংক্রিয়ভাবে ধরা না পড়া ব্যতিক্রম পরিমাপ বাস্তবায়ন করতে ExceptionReporter ক্লাস ব্যবহার করুন।

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

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

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 ইন্টারফেস প্রয়োগ করে এবং Google Analytics-এ একটি ব্যতিক্রম পাঠানোর সময় এর setDescription পদ্ধতিতে কল করে আপনার নিজস্ব পার্সার বাস্তবায়ন করতে পারেন।