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类的更多相关文章

  1. iOS Foundation 框架基类

    iOS Foundation 框架基类 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转 ...

  2. Objective-C:Foundation框架-常用类-NSString全解

    Foundation框架中常用的类有字符串.集合.字典等,这里介绍字符串NSString.本文分别介绍了NSString的创建.从文件里读取NSString字符串.通过函数改变外部的NSString变 ...

  3. Objective-C:Foundation框架-常用类-NSObject

    NSObject是所有类的基类,其常见用法有: #import <Foundation/Foundation.h> @interface Person : NSObject - (void ...

  4. Foundation框架 - NSNumber类

    NSNumber类 NSFormatter #import <Foundation/Foundation.h> int main(int argc, const char * argv[] ...

  5. Foundation框架—日期类(NSDate)

    一 时间类NSDate .创建一个日期对象     NSDate *date1 = [[NSDate alloc] init]; //创建了一个当前的时间点     NSDate *date2 = [ ...

  6. Objective-C:Foundation框架-常用类-NSDate

    直接上代码吧: #import <Foundation/Foundation.h> #pragma mark 日期创建 void dateCreate() { // date方法返回的就是 ...

  7. Objective-C:Foundation框架-常用类-NSNull

    集合中是不能存储nil值的,因为nil在集合中有特殊含义,但有时确实需要存储一个表示“什么都没有”的值,那么可以使用NSNull,它也是NSObject的一个子类. #import <Found ...

  8. Objective-C:Foundation框架-常用类-NSNumber

    NSArray.NSDictionary是不可以存储C语言中的基本数据类型的.NSNumber可以将基本数据类型包装成对象,这样可以间接将基本数据类型存进NSArray.NSDictionary等集合 ...

  9. Objective-C:Foundation框架-常用类-NSMutableDictionary

    直接上代码吧: #import <Foundation/Foundation.h> @interface Student : NSObject @property (nonatomic, ...

随机推荐

  1. Invalid regular expression flags 错误

    找到写正则表达式的地方,检查是不是写了一个非法的正则表达式. Invalid regular expression flags

  2. 剪枝的定义&&hdu1010

    半年前在POJ上遇到过一次剪枝的题目,那时觉得剪枝好神秘...今天在网上查了半天资料,终于还是摸索到了一点知识,但是相关资料并不多,在我看来,剪枝是技巧,而不是方法,也就是说,可能一点实用的小技巧,让 ...

  3. Chromo开发常用插件和***工具

    地址:https://www.google.com/chrome/webstore/ ***工具:链接:http://pan.baidu.com/s/1pLakW7T 密码:2gpw Axure RP ...

  4. LaTeX:毕设模版设计问题1 各级标题编号设为黑体

    我用'titlesec'宏包设计各级标题格式指定字体为黑体,结果标题编号仍为Times New Roman .

  5. 【前端学习笔记】2015-09-06 ~~~~ setAttribute()、slice()

    所遇记录: 1.setAttribute("属性",value),相同的还有addAttribute("属性名",value),getAttribute(“属性 ...

  6. SpringBoot基础之MockMvc单元测试

    SpringBoot创建的Maven项目中,会默认添加spring-boot-starter-test依赖.在<5分钟快速上手SpringBoot>中编写的单元测试使用了MockMvc.本 ...

  7. 使用UltraEdit 替换解决---文字中含有逗号的文件,如何把逗号自动转换成为:回车换行呢?

    实际工作中有时经常遇到一个问题: 一行文字中含有逗号,如何把逗号自动转换成为:回车换行呢? 普遍存在的问题,用Ultredit中^r^n(回车换行)也可以完成.提供大家参考. 王乐,李宏宇,张志鹏,刘 ...

  8. UVa11424 GCD - Extreme (I)

    直接两重循环O(n^2)算gcd……未免太耗时 枚举因数a和a的倍数n,考虑gcd(i,n)==a的i数量(i<=n) 由于gcd(i,n)==a等价于gcd(i/a,n/a)==1,所以满足g ...

  9. 【Visual Studio】error: /ZI”和“/Gy-”命令行选项不兼容(转)

    原文转自 http://bbs.100home.net/view/4206.html [问题说明]vc6项目用vs2015打开时遇到的错误 [解决方法]项目属性->c/c++->常规-&g ...

  10. LeetCode OJ——Pascal's Triangle

    http://oj.leetcode.com/problems/pascals-triangle/ 杨辉三角 先分析数据,找出规律 ans[row][col] = ans[row-1][col-1]+ ...