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

  • 相关阅读:
    kubernetes入门(03)kubernetes的基本概念
    洛谷P3245 [HNOI2016]大数(莫队)
    洛谷P4462 [CQOI2018]异或序列(莫队)
    cf997C. Sky Full of Stars(组合数 容斥)
    cf1121F. Compress String(后缀自动机)
    洛谷P4704 太极剑(乱搞)
    洛谷P4926 [1007]倍杀测量者(差分约束)
    洛谷P4590 [TJOI2018]游园会(状压dp LCS)
    洛谷P4588 [TJOI2018]数学计算(线段树)
    洛谷P4592 [TJOI2018]异或(可持久化01Trie)
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5268805.html
Copyright © 2011-2022 走看看