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. 深入新版BS4源码 探索flex和工程化sass奥秘

    你可能已经听说了一个“大新闻”:Bootstrap4 合并了代号为#21389的PR,宣布放弃支持IE9,并默认使用flexbox弹性盒模型.这标志着:1)前端开发全面步入“现代浏览器”的时代进一步来 ...

  2. 【转】Linux多命令顺序执行连接符(; || && |)

    当我们需要一次执行多个命令的时候,命令之间需要用连接符连接,不同的连接符有不同的效果.下面我们总结一下,加以区分. (1)  ;  分号,没有任何逻辑关系的连接符.当多个命令用分号连接时,各命令之间的 ...

  3. [转]netstat -tnl 列出监听中的连接,查看端口是否开启

    任何网络服务的后台进程都会打开一个端口,用于监听接入的请求. 这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来. 参数 tnl, 现在我们可以看到处于监听状态的 TCP 端口和 ...

  4. Dango notes II: class-based views

    A view is a callable which takes a request and returns a response. A view can be function (function- ...

  5. POJ——3070Fibonacci(矩阵快速幂)

    Fibonacci Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 12329   Accepted: 8748 Descri ...

  6. BZOJ3160 万径人踪灭 【fft + manacher】

    题解 此题略神QAQ orz po神牛 由题我们知道我们要求出: 回文子序列数 - 连续回文子串数 我们记为ans1和ans2 ans2可以用马拉车轻松解出,这里就不赘述了 问题是ans1 我们设\( ...

  7. NOI2016 区间 【线段树】

    题目 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得存在一个 x,使得对于每一个被 ...

  8. Cannot open include file: 'initializer_list': No such file or directory

    Cannot open include file: 'initializer_list': No such file or directory今天使用VS2012编译一个项目的时候,遇到了这个问题,上 ...

  9. mysql的简单介绍

    一 数据类型 分为数值类型,日期时间类型,字符串类型 菜鸟教程网址:http://www.runoob.com/mysql/mysql-data-types.html

  10. 解决c#所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 转载

    最近做一个后来程序,启动了事务后有一段操作业务,当运行一段时间后,出现这个异常 CLR 无法从 COM 上下文 0x1b1c38 转换为 COM 上下文 0x1b1da8,这种状态已持续 60 秒.拥 ...