Objective-C 异常处理

  • 异常处理

    基础类NSException在Objective-C中提供了异常处理。异常处理通过以下块实现-
    • @try-此块尝试执行一组语句。
    • @catch-此块尝试捕获try块中的异常。
    • @finally-此块包含始终执行的语句集。
    
    #import <Foundation/Foundation.h> 
    int main() {
       NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
       NSMutableArray *array = [[NSMutableArray alloc]init];        
       
       @try  {
          NSString *string = [array objectAtIndex:10];
       } @catch (NSException *exception) {
          NSLog(@"%@ ",exception.name);
          NSLog(@"Reason: %@ ",exception.reason);
       }
       
       @finally  {
          NSLog(@"@@finaly Always Executes");
       }
       
       [pool drain];
       return 0;
    }
    
    现在,当我们编译并运行程序时,我们将得到以下结果。
    
    2020-08-24 14:36:05.547 Answers[809:303] NSRangeException 
    2020-08-24 14:36:05.548 Answers[809:303] Reason: *** -[__NSArrayM objectAtIndex:]: index 10 beyond bounds for empty array 
    2020-08-24 14:36:05.548 Answers[809:303] @finally Always Executes
    
    在上面的程序中,由于我们使用了异常处理,因此该程序将继续执行后续程序,而不是由于异常而终止程序。