當機和例外狀況 - iOS SDK

本文件會概略說明使用 iOS v2 專用的 Google Analytics (分析) SDK 所進行的當機和例外狀況評估。

總覽

您可以透過當機和例外狀況評估,評估應用程式發生的當機和例外狀況類型。Google Analytics (分析) 的例外狀況包含:

  • NSString (選填) 說明:例外狀況的說明 (最多 100 個半形字元)。 接受 nil
  • boolean isFatal – 表示例外狀況是否嚴重。 YES 表示嚴重。

系統主要會在「當機和例外狀況」報表中提供當機和例外狀況資料。

偵測到例外狀況

「捕捉到例外狀況」是指您定義了例外狀況處理程式碼的錯誤,這些通常是您預期在正常使用應用程式期間會發生的錯誤,也是您希望應用程式復原的錯誤,例如在要求資料要求期間,網路連線有時會逾時。

您可以在例外狀況處理程式碼的 catch 區塊中加入 sendException:,以測量偵測到的例外狀況。

在以下範例中,應用程式嘗試從雲端載入最高分清單。如果要求逾時 (可能是因為網路連線速度緩慢),我們會將例外狀況傳送至 Google Analytics (分析),然後再為使用者處理:

@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);
}

未偵測到例外狀況評估

未偵測到的例外狀況代表應用程式在執行階段遇到意外狀況,且經常發生嚴重狀況,導致應用程式異常終止。只要將 sendUncaughtExceptions 屬性設為 YES,即可自動將未偵測到的例外狀況傳送至 Google Analytics (分析)。只要使用應用程式委派的 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 Analytics (分析) 都會將其回報為嚴重錯誤。
  • 系統會透過堆疊追蹤自動填入說明欄位。