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
超级会员免费看
订阅专栏 解锁全文
187

被折叠的 条评论
为什么被折叠?



