函数或方法什么时候停止执行?

时间:2016-08-16 08:41:24

标签: objective-c function methods try-catch

这个函数在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。

我问这个问题是要知道该功能何时会停止执行。

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,请参阅投掷例外。

Handling Exception