الأعطال والاستثناءات - حزمة تطوير البرامج (SDK) لنظام التشغيل iOS

يقدّم هذا المستند نظرة عامة عالية المستوى على قياس الأعطال والاستثناء باستخدام حزمة تطوير البرامج (SDK) لخدمة "إحصاءات Google" لنظام التشغيل iOS v2.

نظرة عامة

تتيح لك ميزة قياس الأعطال والاستثناءات قياس عدد الأعطال والاستثناءات التي تحدث في تطبيقك ونوعها. ويتألف الاستثناء في "إحصاءات Google" مما يلي:

  • NSString (اختياري) وصف للاستثناء (100 حرف على الأكثر). يقبل nil.
  • boolean isFatal – تشير إلى ما إذا كان الاستثناء خطيرًا. YES يشير إلى خطير.

تتوفّر بيانات الأعطال والاستثناءات بشكل أساسي في تقرير الأعطال والاستثناءات.

الاستثناءات المفروضة

الاستثناءات هي أخطاء في تطبيقك حدّدت لها رمز معالجة استثناء. وهذه أخطاء تكون عامةً في حال حدوثها أثناء الاستخدام العادي لتطبيقك، والتي ترغب في أن يكون تطبيقك قادرًا على الاسترداد منها، مثل انتهاء مهلة الاتصال بالشبكة في بعض الأحيان أثناء طلب البيانات.

يمكنك قياس الاستثناءات التي تم رصدها من خلال إضافة sendException: إلى كتلة catch لرمز معالجة الاستثناءات.

في المثال التالي، يحاول أحد التطبيقات تحميل قائمة بالنتائج العالية من السحابة الإلكترونية. إذا انتهت مهلة الطلب، ربما بسبب بطء اتصال الشبكة، سنرسل الاستثناء إلى "إحصاءات Google" قبل معالجته للمستخدم:

@try {
  NSArray *highScores = [self getHighScores];
}
@catch (NSException *exception) {
    [tracker sendException:NO // Boolean indicates non-fatal exception.
            withDescription:@"Connection timout %d: %@", connectionError, errorDescription];
}

يمكنك تعبئة حقل وصف الاستثناء تلقائيًا مع الاسم والسبب باستخدام sendException:withDescription:withNSException:، كما في هذا المثال:

@try {
  NSArray *highScores = [self getHighScores];
}
@catch (NSException *exception) {
  [tracker sendException:NO withNSException:exception);
}

لتعبئة الخطأ تلقائيًا مع نطاق الخطأ والرمز والوصف، استخدِم sendException:withDescription:withNSError: على النحو الموضّح أدناه:

NSError *error = nil;
if (![self updateHighScoresWithError:&error]) {
  [tracker sendException:NO withNSError:error);
}

قياس الاستثناء غير الناتج

تمثّل الاستثناءات غير النشطة الحالات التي واجه فيها تطبيقك حالات غير متوقعة في وقت التشغيل وغالبًا ما تكون فادحة، ما يؤدي إلى تعطّل التطبيق نتيجةً لذلك. يمكن إرسال الاستثناءات التي لم يتم تقديمها إلى "إحصاءات Google" تلقائيًا عن طريق ضبط الخاصية sendUncaughtExceptions على YES. ويمكن إجراء ذلك بسهولة من طريقة تفويض المستخدم في تطبيقك على application:didFinishLaunchingWithOptions:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  [GAI sharedInstance].sendUncaughtExceptions = YES; // Enable 

  // ... the rest of your code, include other GAI properties you want to set.
}

عند استخدام قياس الاستثناءات التلقائية، ضع في اعتبارك ما يلي:

  • يتم الإبلاغ عن جميع الاستثناءات المرسلة باستخدام قياس الاستثناءات التلقائية على أنها قاتلة في "إحصاءات Google".
  • تتم تعبئة حقل الوصف تلقائيًا باستخدام تتبُّع تسلسل استدعاء الدوال البرمجية.