This document provides a high-level overview of crash and exception measurement using the Google Analytics SDK for iOS v2.
Overview
Crash and exception measurement allows you to measure the number and type of crashes and exceptions that occur in your app. An exception in Google Analytics consists of:
-
NSString
(Optional) Description – a description of the exception (up to 100 characters). Acceptsnil
. boolean
isFatal – indicates whether the exception was fatal.YES
indicates fatal.
Crash and exception data is available primarily in the Crash and Exceptions report.
Caught Exceptions
Caught exceptions are errors in your app for which you've defined exception handling code. These are generally errors you would anticipate to occur during normal use of your app, and from which you'd like your app to be able to recover, such as the occasional timeout of a network connection during a request for data.
You can measure caught exceptions by adding
sendException:
to the catch
block of your exception handling code.
In the following example, an app tries to load a list of high scores from the cloud. If the request times out, perhaps due to a slow network connection, we'll send the exception to Google Analytics before handling it for the user:
@try { NSArray *highScores = [self getHighScores]; } @catch (NSException *exception) { [tracker sendException:NO // Boolean indicates non-fatal exception. withDescription:@"Connection timout %d: %@", connectionError, errorDescription]; }
You can automatically populate the description field of an exception
with the name and reason by using
sendException:withDescription:withNSException:
, as in this
example:
@try { NSArray *highScores = [self getHighScores]; } @catch (NSException *exception) { [tracker sendException:NO withNSException:exception); }
To automatically populate an error with the error domain,
code, and description, use
sendException:withDescription:withNSError:
as seen below:
NSError *error = nil; if (![self updateHighScoresWithError:&error]) { [tracker sendException:NO withNSError:error); }
Uncaught Exception Measurement
Uncaught exceptions represent instances where your app encountered
unexpected conditions at runtime and are often fatal, causing the app to crash
as a result. Uncaught exceptions can be sent to Google Analytics automatically
by setting the sendUncaughtExceptions
property to YES
. This can be done conveniently from your app
delegate's application:didFinishLaunchingWithOptions
method:
- (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. }
When using automatic exception measurement, keep in mind the following:
- All exceptions sent using automatic exception measurement are reported as fatal in Google Analytics.
- The description field is automatically populated using the stack trace.