为什么@try阻止工作? 它崩溃了应用程序,但它应该被@try块捕获。
NSString* test = [NSString stringWithString:@"ss"];
@try {
[test characterAtIndex:6];
}
@catch (NSException * e) {
NSLog(@"Exception: %@", e);
}
@finally {
NSLog(@"finally");
}
答案 0 :(得分:121)
一切都很完美:)
NSString *test = @"test";
unichar a;
int index = 5;
@try {
a = [test characterAtIndex:index];
}
@catch (NSException *exception) {
NSLog(@"%@", exception.reason);
NSLog(@"Char at index %d cannot be found", index);
NSLog(@"Max index is: %lu", [test length] - 1);
}
@finally {
NSLog(@"Finally condition");
}
日志:
[__ NSCFConstantString characterAtIndex:]:范围或索引越界
无法找到索引5处的字符
最大指数为:3
最后条件
答案 1 :(得分:74)
现在我发现了问题。
从我的断点中删除obj_exception_throw
解决了这个问题。现在它被@try
块捕获了,如果NSSetUncaughtExceptionHandler
块丢失,@try
将处理此问题。
答案 2 :(得分:0)
Objective-C不是Java。在Objective-C中,异常被称为。例外!不要将它们用于错误处理。这不是他们的建议。 只需在使用characterAtIndex之前检查字符串的长度即可,一切都很好。...