发布于 1年前
Objective-C的异常处理
异常:当程序执行时,发生的某种特殊状况,打断了正常的运转流程。
- Objective-C 的异常处理语法与Java和C++类似。通过使用 NSException, NSError 以及自定义的异常处理类来处理这些异常。
- Objective-C 对异常的支持包括四个编译器指令: @try、@catch、@throw 以及 @finally。使用规则:
- 如果这句或这部分代码有可能出现问题,就把它放在@try{}中.
- @catch 捕获异常,出现了问题后,会执行到这里,然后你就可以对错误进行另外的处理,比如记录日志或者提醒用户哪错了。
- @finally 无论是否会抛出异常,这个块中的代码都会执行。
- @throw指令允许你抛出自己的异常。可以使用该指令抛出特定的异常。
异常分类
- 数组越界;
- 不能识别的方法选择器;
- 野指针调用:指针指向销毁的对象;
示例:
@try {
// @try 块中写有可能出错的代码段
NSArray *array = [NSArray array];
[array objectAtIndex:1]; //数组越界
} @catch (NSException *exception) {
// @catch 块内处理异常代码
NSLog(@"捕获到异常:%@%@",exception.name, exception.reason);
} @finally {
//可选项,不管是否出现异常,都会执行此代码段
NSLog(@"始终执行的代码!");
}
NSLog(@"Hello, World!");
输出结果:
Demo[17328:3652315] 捕获到异常:NSRangeException*** -[__NSArray0 objectAtIndex:]: index 1 beyond bounds for empty NSArray
Demo[17328:3652315] 始终执行的代码!
Demo[17328:3652315] Hello, World!