@try-catch блок в Objective-c
почему @try блокирует работу?
Он разбил приложение, но он должен был быть пойман блоком @try.
NSString* test = [NSString stringWithString:@"ss"];
@try {
[test characterAtIndex:6];
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
@finally {
NSLog(@"finally");
}
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