Objective-C 中的异常处理

异常处理在 Objective-C 中与基础类 NSException 一起提供。

异常处理通过以下块实现:

  • @try − 此块尝试执行一组语句。
  • @catch − 此块尝试捕获 try 块中的异常。
  • @finally − 此块包含一组始终执行的语句。
  1. #import <Foundation/Foundation.h>
  2. int main() {
  3. NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  4. NSMutableArray *array = [[NSMutableArray alloc]init];
  5. @try {
  6. NSString *string = [array objectAtIndex:10];
  7. } @catch (NSException *exception) {
  8. NSLog(@"%@ ",exception.name);
  9. NSLog(@"Reason: %@ ",exception.reason);
  10. }
  11. @finally {
  12. NSLog(@"@@finaly Always Executes");
  13. }
  14. [pool drain];
  15. return 0;
  16. }

结果如下:

  1. 2022-07-07 16:36:05.547 Answers[809:303] NSRangeException
  2. 2022-07-07 16:36:05.548 Answers[809:303] Reason: *** -[__NSArrayM objectAtIndex:]: index 10 beyond bounds for empty array
  3. 2022-07-07 16:36:05.548 Answers[809:303] @finally Always Executes

在上面的程序中,由于我们使用了异常处理,程序不会因异常而终止,而是继续执行后续程序。

分类导航