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. 服务器迁移至Linux操作系统

    我在这里试了ubuntu.Debian,centos.最终还是选择了centos 使用工具putty,远程桌面的话使用vnc viewer(看起来service文件更改只需要替换user,但是路径不对 ...

  2. 2017"百度之星"程序设计大赛 - 初赛(B)

    Chess  Accepts: 1805  Submissions: 5738  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 32768 ...

  3. .net SignalR 聊天室

    代码地址:https://gitee.com/srnsrn/netSignalr.git 运行项目打开多个页面 私密聊天

  4. google浏览器audits

    功能翻译 audits,审计 Audits help you identify and fix common problems that affect your site'sperformance,a ...

  5. 学习 WebService 第三步:一个简单的实例(RAD+WAS 8.5开发SOAP项目)

    [开发环境] Web Service 服务器端开发工具:RAD(Eclipse内核) Web Service 服务器:IBM WebSphere v8.5 REST/SOAP:SOAP(JAX-WS/ ...

  6. mybatis读取oracle中blob

    controller: byte[] blob = commonService.getPersonImage(bean.getIdCard()); String base64 = new String ...

  7. kubernetes安装kubectl和minikube

    安装kubectl命令 curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/v1.10.0/bin/l ...

  8. SharePoint 2013 SSO-Secure Store Service在实际案例中的应用

    文章目录: Secure Store Service介绍 Secure Store Service部署 Secure Store Service应用 之前有一篇博客讲到使用EMSManagedAPI操 ...

  9. css3 容器内容垂直居中

    .item{ top: 50%; position: absolute; transform: translateY(-50%); /* 这里我们使用css3的transform来达到类似效果 */ ...

  10. LeetCode OJ--Rotate Image

    http://oj.leetcode.com/problems/rotate-image/ 将矩阵顺时针旋转90度.要求为原地算法. 注意对输入的测试,矩阵为空,长度为1,为2时…… #include ...