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, ...
随机推荐
- 【LeetCode】Longest Common Prefix(最长公共前缀)
这道题是LeetCode里的第14道题. 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["f ...
- AutoEncoder and DenoiseAutoEncoder
AutoEncoder and DenoiseAutoEncoder 第一部分 首先我们将实现一个如上图结构的最简单的AutoEncoder. 加载数据 在这里,我们使用MNIST手写数据集来进行实验 ...
- [git 学习篇] 提交文件
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256916071d ...
- 模拟select框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- [BZOJ3535][Usaco2014 Open]Fair Photography
[BZOJ3535][Usaco2014 Open]Fair Photography 试题描述 FJ's N cows (1 <= N <= 100,000) are standing a ...
- 刷题总结——coneology(poj2932 扫描线)
题目: Description A student named Round Square loved to play with cones. He would arrange cones with d ...
- 标准C程序设计七---64
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- UML学习倒腾记
先看到http://www.jianshu.com/p/1256e2643923这篇博客,号称21分钟入门uml,也许是我太笨了吧,一下午也没有完全搞定: 使用过atom编辑器,没有完全运行出来结果. ...
- 无密码登录Linux
配置主机A无密码登录主机B 主机A:192.168.1.110 主机B:192.168.1.111 先确保所有主机的防火墙处于关闭状态. 在主机A上执行如下: 1. $cd ~/.ssh 2. $ss ...
- Linux 之 LNMP服务器搭建-MySQL
LNMP服务器搭建-MySQL 参考教程:[千峰教育] 系统版本: CentOS 6.8 关闭防火墙和Selinux service iptables stop setenforce 0 安装mysq ...