--------------- FKMyException.h ---------------
#import
<Foundation/Foundation.h>
@interface
FKMyException :
NSException
@end
--------------- FKMyException.m ---------------
#import
"FKMyException.h"
@implementation FKMyException
@implementation FKMyException
@end
--------------- dog.h ---------------
#import
<Foundation/Foundation.h>
@interface FKDog : NSObject
@property (nonatomic , assign) int age;
@interface FKDog : NSObject
@property (nonatomic , assign) int age;
@end
--------------- dog.m ---------------
#import
"FKDog.h"
#import "FKMyException.h"
@implementation FKDog
- (void) setAge:(int)age
{
if(self.age != age)
{
if(age > 50 || age < 0)
{
@throw [[FKMyException alloc]
initWithName:@"IllegalArgumentException"
reason:@"狗的年龄必须在0~50之间"
userInfo:nil];
}
_age = age;
}
}
#import "FKMyException.h"
@implementation FKDog
- (void) setAge:(int)age
{
if(self.age != age)
{
if(age > 50 || age < 0)
{
@throw [[FKMyException alloc]
initWithName:@"IllegalArgumentException"
reason:@"狗的年龄必须在0~50之间"
userInfo:nil];
}
_age = age;
}
}
@end
---------------
main.m
---------------
#import
<Foundation/Foundation.h>
#import
"FKDog.h"
#import "FKMyException.h"
int main()
{
FKDog* dog = [[FKDog alloc] init];
dog.age = 20;
NSLog(@"狗的年龄为:%d", dog.age);
dog.age = 80;
#import "FKMyException.h"
int main()
{
FKDog* dog = [[FKDog alloc] init];
dog.age = 20;
NSLog(@"狗的年龄为:%d", dog.age);
dog.age = 80;
}
一、本节代码涉及到的知识点:
1.如果想在程序中自定义异常,可以使用@throw语句。
2.@throw语句可以单独使用,它抛出的不是异常类,而是异常实例,而且每次只能抛出一个异常实例。
3.因为要对狗的年龄进行控制,所以FKDog的实现部分必须重写setAge方法。