本文共 3372 字,大约阅读时间需要 11 分钟。
#import <Foundation/Foundation.h>
#import <Foundation/NSObject.h>
@interface Cup : NSObject
{
int level; //成员变量-睡的深度值
}
-(int)level; //获取水的深度
-(void)setLevel:(int)i; //设置水的深度值
-(void)fill; //水的深度值增加10
-(void)empty; //水的深度值减少10
-(void)print; //输出水的深度值
-(double)set:(double)a over:(double)b; //计算一个百分比
@end
#import "Person.h"
#import "CupOverflowException.h"
#import "CupWarningException.h"
@implementation Cup:NSObject;
-(id)init //初始化函数
{
self = [super init];
if(self)
{
[self setLevel:0]; //初始化水的深度值为0
}
return self;
}
-(int)level //获取水的深度值
{
return level;
}
-(double)set:(double)_a over:(double)_b //计算一个百分比
{
return _a/_b;
}
-(void)setLevel:(int)i
{
level = i;
if(level>100)
{
NSException *e = [CupOverflowException exceptionWithName:@"CupOverflowException" reason:@"The level is above 100" userInfo:nil];
@throw e;
}
else if(level>=50)
{
NSException *e = [CupWarningException exceptionWithName:@"CupWarningException" reason:@"The level is above or at 50" userInfo:nil];
@throw e; //抛出警告异常
}
else if(level<0)
{
NSException *e = [NSException exceptionWithName:@"CupunderflowException" reason:@"The level is blow 0" userInfo:nil];
@throw e; //抛出异常
}
}
-(void)fill //设置水杯的水的深度值增加10
{
[self setLevel:level+10];
}
-(void)empty //设置水杯的水的深度减少10
{
[self setLevel:level-10];
}
-(void)print //输出水杯内水的深度值
{
NSLog(@"Cup level is:%d",level);
}
@end
其他还有两个空类:CupWarningException;CupoverflowException#import <Foundation/Foundation.h>
#import "Person.h"
#import "CupOverflowException.h"
#import "CupWarningException.h"
#import <Foundation/NSException.h>
#import <Foundation/NSString.h>
#import <Foundation/NSAutoreleasePool.h>
int main(int argc, const char * argv[])
{
//创建一个自动释放池
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
//分配并初始化一个水杯对象
Cup *cup = [[Cup alloc]init];
int i;
for(i=0;i<4;i++)
{
[cup fill];
[cup print];
}
for (i=0;i<7;i++) {
@try {
[cup fill];
}
@catch (CupWarningException *e) {
NSLog(@"%@ %@",[e name],[e reason]); //输出警告异常信息
}
@catch (CupOverflowException *e) {
NSLog(@"%@ %@",[e name],[e reason]); //输出溢出异常信息
}
@finally {
[cup print];
}
}
@try {
[cup setLevel:-1];
}
@catch (NSException *e) {
NSLog(@"%@ %@",[e name],[e reason]); //输出深度小于0的异常信息
}
[pool release];
[cup release];
}
结果:CupWarningException The level is above or at 50
2013-07-31 15:53:32.053 testOC[4063:303] Cup level is:50
2013-07-31 15:53:32.053 testOC[4063:303] CupWarningException The level is above or at 50
2013-07-31 15:53:32.053 testOC[4063:303] Cup level is:60
2013-07-31 15:53:32.054 testOC[4063:303] CupWarningException The level is above or at 50
2013-07-31 15:53:32.054 testOC[4063:303] Cup level is:70
2013-07-31 15:53:32.054 testOC[4063:303] CupWarningException The level is above or at 50
2013-07-31 15:53:32.055 testOC[4063:303] Cup level is:80
2013-07-31 15:53:32.055 testOC[4063:303] CupWarningException The level is above or at 50
2013-07-31 15:53:32.055 testOC[4063:303] Cup level is:90
2013-07-31 15:53:32.056 testOC[4063:303] CupWarningException The level is above or at 50
2013-07-31 15:53:32.056 testOC[4063:303] Cup level is:100
2013-07-31 15:53:32.056 testOC[4063:303] CupOverflowException The level is above 100
2013-07-31 15:53:32.089 testOC[4063:303] Cup level is:110
2013-07-31 15:53:32.090 testOC[4063:303] CupunderflowException The level is blow 0
本文转自蓬莱仙羽51CTO博客,原文链接:http://blog.51cto.com/dingxiaowei/1366502,如需转载请自行联系原作者