2013-04-22 3 views
3

Я хочу, чтобы все ошибки и исключения были удалены мной и добавили дополнительную информацию (например, пользователь), чтобы сохранить ее. Теперь, моя мысль - обернуть блок try-catch в файле didFinishLaunchingWithOptions. В блоке catch я регистрирую исключение и дополнительную информацию, а затем повторно загружаю его. Правильно ли это реализовать? Спасибо заранее.Catch crashes and exceptions in iOS

Обновление для кода:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 
@try { 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 

    self.loginViewController = [[LoginViewController alloc] init]; 
    self.window.rootViewController = self.loginViewController; 
    [self.window makeKeyAndVisible]; 
} 
@catch (NSException *exception) { 
    // Save the exception description and additional info here 
    ... 
    // And re-throw it. 
    [exception raise]; 
} 
    return YES; 

} 

Дальнейшее обновление: Я попытался выше код сам, и он не может поймать исключения произошло в других местах. Я знаю, что в Google Analytics для iOS SDK есть свойство sendUncaughtExceptions, чтобы делать подобное. Я думаю, что если я реализую аналогичную функциональность, я могу обеспечить большую гибкость, так как у нас есть собственный сервер ошибок (я загружу журнал ошибок на наш сервер). Любое предложение ценят.

Решение: Наконец, я получил решение из этого блога: http://www.cocoawithlove.com/2010/05/handling-unhandled-exceptions-and.html

+0

Какой тип «дополнительная информация» Вы хотите войти? –

+0

@Bhargavi: Я хочу отслеживать конкретное устройство и информацию о пользователе (например, идентификатор устройства, адрес электронной почты и т. Д.). – yibuyiqu

+0

@ShivanRaptor: Я не спрашиваю, как использовать блок try-catch. Интересно, ставил ли я try-catch в didFinishLaunchingWithOptions и обертывал все предыдущие строки, делает ли он все возможные сбои даже запускать потоки в другом месте? – yibuyiqu

ответ

0

Вы смотрели в TestFlight API? Он невероятно прост в реализации, свободен и звучит так, как будто он выполнит то, что вы хотите. Он имеет встроенную удаленную обработку исключений и удаленное ведение журнала (вы просто используете TFLog, как и NSLog). Вы можете регистрировать пользователей UDID и отслеживать пользователей для бета-тестирования или распространения на предприятии, просто имейте в виду, что Apple не позволит вам собирать UDID в приложении для магазина приложений, поэтому вам придется отключить его для этой версии - вы все равно получите сбой журналов и других показателей, они просто будут анонимными.

www.testflightapp.com