码迷,mamicode.com
首页 > 其他好文 > 详细

Foundation框架 - NSException类

时间:2015-03-20 11:02:24      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:异常类   foundation   

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;
}

Foundation框架 - NSException类

标签:异常类   foundation   

原文地址:http://blog.csdn.net/wangzi11322/article/details/44487421

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!