хорошо закодированная обработка исключений - @try @catch или без него - PullRequest
0 голосов
/ 24 мая 2011

Я хочу знать глобальный механизм обработки исключений.

Как будто у меня есть 20 различных классов, и я хочу поставить try catch во всех, тогда это может быть чем-то, что отнимает много времени, а также может создавать проблемы.

Я нашел такой код, как

-(void)ExceptionOccure:(NSException *)exception
{
    NSArray *stack = [exception callStackReturnAddresses];
    NSLog(@"%@", stack);
}

Но я не могу вызвать этот метод, используя

-(void) applicationDidFinishLaunching: (UIApplication *) application
{
     NSSetUncaughtExceptionHandler (&ExceptionOccure);
}

Я узнал об этом, но не смог вызвать ни одного исключения.

Я хочу создать глобальный механизм для обработки этого исключения. так что в любом классе, если возникнет какое-либо исключение, он вызовет написанную выше функцию и обработает исключение, а также может сохранить стек в базе данных, как мне нужно.

Может ли кто-нибудь предложить мне или предоставить пример кода для обработки исключений в глобальном масштабе ..

заранее спасибо

1 Ответ

0 голосов
/ 24 мая 2011

ваша функция-обработчик является функцией C, поэтому вы должны реализовать ее следующим образом:

static void uncaughtExceptionHandler(NSException *exception) 
{
   NSArray *stack = [exception callStackReturnAddresses];
   NSLog(@"%@", stack);
}

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
    NSSetUncaughtExceptionHandler(&uncaughtExceptionHandler);
}
...