zoukankan      html  css  js  c++  java
  • 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; }

  • 相关阅读:
    poj 1088 滑雪
    位运算与bitset
    hdu 4607 Park Visit
    树的直径
    codeforces 495D Sonya and Matrix
    German Collegiate Programming Contest 2015(第三场)
    BAPC 2014 Preliminary(第一场)
    Benelux Algorithm Programming Contest 2014 Final(第二场)
    E. Reachability from the Capital(tarjan+dfs)
    poj2104 K-th Number(划分树)
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5268805.html
Copyright © 2011-2022 走看看