Object-C技术学习,更多资源请访问 https://www.itkc8.com
// main.m
// OC使用@try处理异常
//
// Created by Goddog on 15/1/11.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
/*
1.OC的异常机制并不是作为常规的编程实践,通常是作为一种程序调试、捕捉机制。
2.通常情况下,如果@try块被执行一次,则@try块后只有一个@catch块被执行,绝不可能有多个@catch块被执行,除非使用goto。
3.@try块里声明的变量是代码块内的局部变量,它只是在@try块内有效,@catch块中不能访问该变量。
4.语法:@try { //业务代码实现 ...} @catch (异常1 ex){ //异常代码处理... } @catch (异常2 ex){ //异常代码处
理... } ... @finally{}
5.异常几个常见方法:(1)name: 返回异常详细的名称;
(2)reason: 返回引发该异常的原因;
(3)userInfo: 返回引发该异常的用户附加信息返回一个NSDictionary对象
6.使用@finally回收资源,在没有使用ARC机制的情况下,所有对象占有的内存必须显示回收。
7.不要在@finally块中使用return和@throw等导致方法终止的语句。
*/
//
// Person.h
// OC使用@try处理异常
//
// Created by Goddog on 15/1/11.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import <Foundation/Foundation.h>
//定义协议
@protocol Person <NSObject>
@optional
-(void) eat;
@end
//
// SuperMan.h
// OC使用@try处理异常
//
// Created by Goddog on 15/1/11.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "Person.h"
//定义接口实现协议
@interface SuperMan : NSObject<Person>
@end
//
// SuperMan.m
// OC使用@try处理异常
//
// Created by Goddog on 15/1/11.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
#import "SuperMan.h"
//实现部分
@implementation SuperMan
@end
#import <Foundation/Foundation.h>
#import "SuperMan.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
//实例
//SuperMan* superMan = [[SuperMan alloc] init];
//没有实现eat方法,所有警告
//[superMan eat];
//进行异常处理
@try {
SuperMan* superMan = [[SuperMan alloc] init];
[superMan eat];
}
@catch (NSException *exception) {
NSLog(@"捕捉异常:%@,%@",exception.name,exception.reason);
}
@finally {
NSLog(@"资源回收完毕!");
}
}
NSLog(@"程序执行完毕!");
return 0;
}
Object-C技术学习,更多资源请访问 https://www.itkc8.com