14、Objective-C 错误处理与文件操作全解析

Objective-C 错误处理与文件操作全解析

1. 异常的抛出与捕获

在 Objective-C 里,异常处理代码和 Java 或 C++ 有相似之处。不过,它存在一些限制。比如,抛出非 NSException 对象虽然可能可行,但并不被支持。在 OS X 系统中,使用旧版运行时编译时抛出的对象,或许仍会被旧的 NS_HANDLER 宏捕获,而这个宏期望的是 NSException 实例。使用 GCC 运行时(但不包括 GNUstep 运行时)时,抛出未在运行时正确注册的类实例,可能会导致展开库崩溃。并且,完全不支持抛出非对象类型。

以下是一个异常捕获的示例代码:

NSArray *array = [NSArray array];
@try
{
    [array objectAtIndex: 0];
}
@catch (NSException *e)
{
    NSLog(@"Caught exception %@", e);
}

旧的 Objective-C 代码可能包含以 NS_DURING 开头的代码块,这些是定义 setjmp() 风格异常处理的旧宏。在新版的 Foundation 框架中,它们在 NSException.h 里被定义为使用新的异常处理关键字。这些旧宏存在一些局限性,即便它们被用作新关键字的包装器。具体如下:
- 只能捕获 NSExcep

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值