这个函数在Objective-C中返回什么?
- (NSInteger)test1 {
@try {
return 1;
} @catch (NSException *exception) {
return 2;
} @finally {
return 3;
}
return 4;
}
函数或方法什么时候停止执行?(不仅仅是Objective-C代码)
------------更新--------------
结果是3。
如果我在最终中评论或删除返回代码,该功能会输出什么?
- (NSInteger)test2 {
@try {
return 1;
} @catch (NSException *exception) {
return 2;
} @finally {
//return 3;
}
return 4;
}
结果是1。
我问这个问题是要知道该功能何时会停止执行。
答案 0 :(得分:0)
我尝试了你的代码。我在viewDidLoad方法中调用了你的编码
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
NSInteger i = [self test];
NSLog(@"The value is - %ld",(long)i);
}
- (NSInteger)test {
@try
{
return 1;
} @catch (NSException *exception) {
return 2;
} @finally {
return 3;
}
return 4;
}
打印
The value is - 3
实际上首先调用try块,然后调用finally块。
@try - 定义一个代码块,它是一个异常处理域: 可能引发异常的代码。
@catch() - 定义包含用于处理异常的代码的块 抛出@try块。 @catch的参数是例外 在本地抛出的对象;这通常是一个NSException对象,但可以 是其他类型的对象,例如NSString对象。
@finally - 定义随后的相关代码块 执行是否抛出异常。 finally块包含必须执行的代码,无论是否抛出异常。
@throw - 抛出异常;这个指令几乎完全相同 对NSException的raise方法的行为。你经常扔 NSException对象,但不限于此。欲获得更多信息 关于@throw,请参阅投掷例外。