Objective-c学习笔记07——异常处理(try catch)

这篇博客介绍了Objective-C的异常处理机制,包括@try、@catch和@finally块的使用,并通过代码示例展示了如何在Objective-C中进行异常捕获和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Objective-C可以开发apple家族系列产品的软件,这里记录成笔记方便日后复习:

一、Oc的异常处理

1 异常处理
Objective – C中提供了异常处理和线程同步,这是解释在这篇文章和“Threading”的支持。要打开这些功能的 支持,使用GNU编译器集(海合会)版本3.3和更高版本的-fobjc-exceptions开关。
2 支持的编译器指令
@try@catch@throw,和 @finally
代码有可能抛出有可能抛出的异常是封闭在一个@ try块。 @catch()块包含为@ try 块抛出的异常的异常处理逻辑。一个@ finally块包含代码必须执行是否引发异常与否。您可以使用@throw指令抛出一个异常,这基本上是一个对Objective – C对象的指针。你可以使用NSException对象但不限于他们。

  
  1. @try {
  2. < #statements#>
  3. }
  4. @catch (NSException *exception) { //捕捉最具体的异常类型
  5. < #handler#>
  6. }
  7. @catch (NSException *ne) { //捕获一个比较重要的异常类型。
  8.  
  9. }
  10. @catch (id ue) { //再次掷出捕获的异常。
  11. }
  12. @finally { //不管有没有异常finally内的代码都会执行。
  13. < #statements#>
  14. }

二、代码演示

  
  1. NSArray * array = @[@"Apple", @"Android", @"Windows"];
  2. @try {
  3. array = [NSArray addObject:@"HHH"];
  4. }
  5. @catch (NSException *exception) {
  6. NSLog(@"exception = %@", exception);
  7. }
  8. @finally {
  9. NSLog(@"不管有没有异常我都执行!");
  10. NSLog(@"%@", array);
  11. }
  12.  
  13. NSException *e = [NSException exceptionWithName:@"CupUnderflowException" reason:@"The level is below 0" userInfo:nil];
  14. @throw e;

控制台输出:

2013-10-18 15:25:17.990 objective-c——NSArray[11282:303] +[NSArray addObject:]: unrecognized selector sent to class 0x7fff71f701e0
2013-10-18 15:25:17.992 objective-c——NSArray[11282:303] exception = +[NSArray addObject:]: unrecognized selector sent to class 0x7fff71f701e0
2013-10-18 15:25:17.992 objective-c——NSArray[11282:303] 不管有没有异常我都执行!
2013-10-18 15:25:17.993 objective-c——NSArray[11282:303] (
    Apple,
    Android,
    Windows
)
2013-10-18 15:25:17.994 objective-c——NSArray[11282:303] *** Terminating app due to uncaught exception 'CupUnderflowException', reason: 'The level is below 0'
*** First throw call stack:
(
	0   CoreFoundation                      0x00007fff85f91b06 __exceptionPreprocess + 198
	1   libobjc.A.dylib                     0x00007fff835113f0 objc_exception_throw + 43
	
	
	4   libdyld.dylib                       0x00007fff83cea7e1 start + 0
)
libc++abi.dylib: terminate called throwing an exception
声明: 本文采用  BY-NC-SA 协议进行授权. 转载请注明转自:  Objective-c学习笔记07——异常处理(try catch)
此条目发表在 objective-c分类目录,贴了 objective-ctry异常处理标签。将 固定链接加入收藏夹。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值