@try-catch блок в Objective-c



почему @try блокирует работу?
Он разбил приложение, но он должен был быть пойман блоком @try.



 NSString* test = [NSString stringWithString:@"ss"];

@try {
[test characterAtIndex:6];

}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
@finally {
NSLog(@"finally");
}
526   3  

3 ответов:

все работает отлично :)

 NSString *test = @"test";
    unichar a;
    int index = 5;

    @try {
        a = [test characterAtIndex:index];
    }
    @catch (NSException *exception) {
        NSLog(@"%@", exception.reason);
    }
    @finally {
        NSLog(@"Char at index %d cannot be found", index);
        NSLog(@"Max index is: %d", [test length]-1);
    }

Log:

[__nscfconstantstring characterAtIndex:]: диапазон или индекс вне границ

Char в индексе 5 не может быть найден

максимальный индекс: 3

теперь я нашел проблему.

удаление obj_exception_throw из моих точек останова решил это. Теперь он пойман @try блок, а также NSSetUncaughtExceptionHandler будет обрабатывать это, если a @try блок отсутствует.

вы уверены, что это не что-то другое, потому что точный код вы вставили выше работает нормально.

2010-07-29 16:45:57.677 test[93103:207] Exception: *** -[NSCFString characterAtIndex:]: Range or index out of bounds
2010-07-29 16:45:57.678 test[93103:207] finally

Comments

    Ничего не найдено.