1

我是 Objective C 的新手,之前有 java 知识。我正在学习该语言的工作原理,我想知道如何在 Objective-c 中捕获 outOfBoundsExceptions?特别是数组。

例子:

NSString *stringReceivedServer=@"Jim 1551 error";
NSArray *split= [stringReceivedServer componentsSeparatedByString:""];
NSString *labelString= [split objectAtIndex:3] //Out of bounds

我做了这个例子,因为我将从服务器获取一些信息,并且我将获得如上所示的信息。数据的发送方式有一个标准,但有时可能会出错,所以如果字符串不是应该的,我怎么能捕捉到错误?

谢谢!

4

2 回答 2

7

首先,不要依赖异常处理,而只需编写正确的代码。

其次,如果您有兴趣:您可以使用异常处理程序捕获NSExceptions :@try-@catch-@finally

@try {
    id obj = [array objectAtIndex:array.count]; // BOOM
}
@catch (NSException *e) {
    NSLog(@"Got ya! %@", e);
}
@finally {
    NSLog(@"Here do unconditional deinitialization");
}
于 2013-03-31T06:42:20.093 回答
5

与 Java 不同,由于 Obj-C 是 C 的超集,所以这里越界不是错误。

这是逻辑错误,您需要处理自己的逻辑。

作为,

NSString *labelString=nil;
if(split.count>3){
   labelString= [split objectAtIndex:3]; //Out of bounds
}
else{
    NSLog(@"out of bound");
}

或者你可以这样做:

@try {
   NSString *labelString = [split objectAtIndex:3];  
}
@catch (NSRangeEception * e) {
   NSLog(@"catching %@ reason %@", [e name], [e reason]);
}
@finally {
   //something that you want to do wether the exception is thrown or not.
}
于 2013-03-31T06:36:17.880 回答