Foundation框架 - NSException类
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类的更多相关文章
- iOS Foundation 框架基类
iOS Foundation 框架基类 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转 ...
- Objective-C:Foundation框架-常用类-NSString全解
Foundation框架中常用的类有字符串.集合.字典等,这里介绍字符串NSString.本文分别介绍了NSString的创建.从文件里读取NSString字符串.通过函数改变外部的NSString变 ...
- Objective-C:Foundation框架-常用类-NSObject
NSObject是所有类的基类,其常见用法有: #import <Foundation/Foundation.h> @interface Person : NSObject - (void ...
- Foundation框架 - NSNumber类
NSNumber类 NSFormatter #import <Foundation/Foundation.h> int main(int argc, const char * argv[] ...
- Foundation框架—日期类(NSDate)
一 时间类NSDate .创建一个日期对象 NSDate *date1 = [[NSDate alloc] init]; //创建了一个当前的时间点 NSDate *date2 = [ ...
- Objective-C:Foundation框架-常用类-NSDate
直接上代码吧: #import <Foundation/Foundation.h> #pragma mark 日期创建 void dateCreate() { // date方法返回的就是 ...
- Objective-C:Foundation框架-常用类-NSNull
集合中是不能存储nil值的,因为nil在集合中有特殊含义,但有时确实需要存储一个表示“什么都没有”的值,那么可以使用NSNull,它也是NSObject的一个子类. #import <Found ...
- Objective-C:Foundation框架-常用类-NSNumber
NSArray.NSDictionary是不可以存储C语言中的基本数据类型的.NSNumber可以将基本数据类型包装成对象,这样可以间接将基本数据类型存进NSArray.NSDictionary等集合 ...
- Objective-C:Foundation框架-常用类-NSMutableDictionary
直接上代码吧: #import <Foundation/Foundation.h> @interface Student : NSObject @property (nonatomic, ...
随机推荐
- 深入新版BS4源码 探索flex和工程化sass奥秘
你可能已经听说了一个“大新闻”:Bootstrap4 合并了代号为#21389的PR,宣布放弃支持IE9,并默认使用flexbox弹性盒模型.这标志着:1)前端开发全面步入“现代浏览器”的时代进一步来 ...
- 【转】Linux多命令顺序执行连接符(; || && |)
当我们需要一次执行多个命令的时候,命令之间需要用连接符连接,不同的连接符有不同的效果.下面我们总结一下,加以区分. (1) ; 分号,没有任何逻辑关系的连接符.当多个命令用分号连接时,各命令之间的 ...
- [转]netstat -tnl 列出监听中的连接,查看端口是否开启
任何网络服务的后台进程都会打开一个端口,用于监听接入的请求. 这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来. 参数 tnl, 现在我们可以看到处于监听状态的 TCP 端口和 ...
- 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- ...
- POJ——3070Fibonacci(矩阵快速幂)
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 12329 Accepted: 8748 Descri ...
- BZOJ3160 万径人踪灭 【fft + manacher】
题解 此题略神QAQ orz po神牛 由题我们知道我们要求出: 回文子序列数 - 连续回文子串数 我们记为ans1和ans2 ans2可以用马拉车轻松解出,这里就不赘述了 问题是ans1 我们设\( ...
- NOI2016 区间 【线段树】
题目 在数轴上有 n个闭区间 [l1,r1],[l2,r2],...,[ln,rn].现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置.换句话说,就是使得存在一个 x,使得对于每一个被 ...
- Cannot open include file: 'initializer_list': No such file or directory
Cannot open include file: 'initializer_list': No such file or directory今天使用VS2012编译一个项目的时候,遇到了这个问题,上 ...
- mysql的简单介绍
一 数据类型 分为数值类型,日期时间类型,字符串类型 菜鸟教程网址:http://www.runoob.com/mysql/mysql-data-types.html
- 解决c#所有单线程单元(STA)线程都应使用泵式等待基元(如 CoWaitForMultipleHandles),并在运行时间很长的操作过程中定期发送消息。 转载
最近做一个后来程序,启动了事务后有一段操作业务,当运行一段时间后,出现这个异常 CLR 无法从 COM 上下文 0x1b1c38 转换为 COM 上下文 0x1b1da8,这种状态已持续 60 秒.拥 ...