Foundation框架 - NSException类

来源:互联网 发布:python 布尔值 编辑:程序博客网 时间:2024/06/05 18:58

NSException类

WBStudentManager.h

#import <Foundation/Foundation.h>NSString* const NameInvalidException ;@interface WBStudentManager : NSObject- (void)registStudent:(NSString*)name;@end

WBStudentManager.m

#import "WBStudentManager.h"@implementation WBStudentManager//注册学生信息- (void)registStudent:(NSString *)name{    if (name==nil) {        NSException* ex=[NSException exceptionWithName:        NSInvalidArgumentException reason:@"name不能为nil" userInfo:nil];        @throw ex;  //抛出异常对象    }    if ([name isEqual:@"学生"]) {        /**         *  arg1: name自定义异常名称         *  arg2: 异常的原因,使用的是类似NSLog()的方式,带格式替换         */        [NSException raise:@"NameInvalidException" format:@"学生姓名%@不合法",name];        NSLog(@"raise方法调用后立即会结束当前方法,该行的log语句无法执行!");    }}@end

main.m

////  main.m//  9.NSException////  Created by wangzhaolu on 14-2-29.//  Copyright (c) 2014年 Turing All rights reserved.//#import "WBStudentManager.h"int main(int argc, const char * argv[]) {    @autoreleasepool {        //NSInvalidArgumentException        @try{            NSString* str =[[NSString alloc]initWithString:nil];            NSLog(@"nil string 输出结果%@",str);        }        @catch(NSException* ex)        {            //字符串比较可以使用==进行比较,比较的是内容不是地址,相当于isEqual|isEqualToString            if(ex.name == NSInvalidArgumentException)            {                NSLog(@"输入的参数不正确,atString不能为nil");                NSLog(@"系统输出原因:%@",ex.reason);                NSLog(@"userInfo:%@",ex.userInfo);            }            NSLog(@"出现了异常");        }        //finally不是必须的!!除非要清理内存等操作        @finally{                NSLog(@"最终运行了finally部分");        }        @try {            WBStudentManager* mgr=[WBStudentManager new];            [mgr registStudent:nil];            //[mgr registStudent:@"王小明"];        }        @catch (NSException *exception) {            if ([exception.name isEqual:NameInvalidException]) {                //姓名无效异常                NSLog(@"学生姓名输入不符合规范!");            }else if([exception.name isEqual: NSInvalidArgumentException]){                //姓名为nil                NSLog(@"学生姓名为空,无法执行!");                //将当前错误在抛出                //方式一:                //@throw;                //方式二:                [exception raise];            }        }    }    return 0;}
2 0