文档章节

[Objective-C]异常处理

lavzchen
 lavzchen
发布于 2015/05/19 15:51
字数 237
阅读 18
收藏 0

一、异常的捕获

和java类似,使用:

@try{

}

@catch{

}

@finally{

}

示例代码

@try {
    NSArray *array = [NSMutableArray array];
            
    // 从空数组里面取值(有异常)
    [array objectAtIndex:0];
}
@catch (NSException *exception) {
     NSLog(@"异常:%@", exception.name);
     NSLog(@"原因:%@", exception.reason);
}
@finally {
     NSLog(@"finally");
}


二、异常抛出

1)使用@throw

在有异常的地方直接使用@throw 可以将异常抛到上一层。 也可以使用“ @throw + 异常 ” 抛出指定的异常

示例代码:

/** 通过@throw抛出异常*/
@try {
     // 抛出一个字符串异常
     @throw @"string exception";
}
@catch (NSString *exception) {
     // 捕捉字符串异常
     NSLog(@"%@", exception);
}@catch (id exception) {
     // 捕捉其他异常
     NSLog(@"%@", exception);
            
     // 将异常抛到上一层
     @throw;
}

2)使用raise:format:

调用方法:

+ (void)raise:(NSString *)name format:(NSString *)format, ...

name:异常名称  format:异常原因

示例代码:

/** raise方式抛出异常 */
@try {
    [NSException raise:@"TestException" format:@"测试"];
}
@catch (NSException *exception) {
     NSLog(@"异常:%@", exception.name);
     NSLog(@"原因:%@", exception.reason);
}


参考文章:http://www.objectivec-iphone.com/introduction/exception/throw-raise.html

© 著作权归作者所有

lavzchen
粉丝 2
博文 33
码字总数 5049
作品 0
常州
私信 提问
从C#到Objective-C,循序渐进学习苹果开发(4)--代码块(block)和错误异常处理的理解

本随笔系列主要介绍从一个Windows平台从事C#开发到Mac平台苹果开发的一系列感想和体验历程,本系列文章是在起步阶段逐步积累的,希望带给大家更好,更真实的转换历程体验。本文继续上一篇随笔...

walb呀
2017/12/04
0
0
@synchronized 指令

@synchronized 指令可以方便的在oc代码中创建互斥锁。这个指令和其他的互斥锁做的一样,防止同一时间不同的线程获取同一个互斥锁。在这种情况下,你不必创建互斥或锁对象,相反,你只需要使用...

petsatan
2016/05/26
41
0
Swift互用性:采用Cocoa设计模式(Swift 2.0版)

Swift互用性:采用Cocoa设计模式(Swift 2.0版) Using Swift with Cocoa and Objective-C:采用Cocoa设计模式(Swift 2.0版更新) 本页包含内容: 委托(Delegation) 错误处理(Error Han...

法斗斗
2016/03/01
13
0
调用objc_msgSend方法在64位下崩溃解决方法

之前一直在非64位机器下测试一切正常的程序,在iPhone5s下无缘无故崩溃。崩溃的位置是调用objc_msgSend时出现。经过一番辛苦搜索终于发现苹果官网上有一段这样的描述: Dispatch Objective-C...

vimfung
2014/11/05
0
1
iOS 编写高质量Objective-C代码(五)

级别: ★★☆☆☆ 标签:「iOS」「内存管理」「Objective-C」 作者: MrLiuQ 审校: QiShare团队 前言: 这几篇文章是小编在钻研《Effective Objective-C 2.0》的知识产出,其中包含作者和小...

QiShare
2018/09/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot系列教程JPA之新增记录使用姿势

SpringBoot系列教程JPA之新增记录使用姿势 上一篇文章介绍了如何快速的搭建一个JPA的项目环境,并给出了一个简单的演示demo,接下来我们开始业务教程,也就是我们常说的CURD,接下来进入第一...

小灰灰Blog
26分钟前
2
0
大话文本检测经典模型:Pixel-Anchor

文本检测是深度学习中一项非常重要的应用,在前面的文章中已经介绍过了很多文本检测的方法,包括CTPN(详见文章:大话文本检测经典模型CTPN)、SegLink(详见文章:大话文本检测经典模型Seg...

雪饼
29分钟前
0
0
手把手教你写一个RPC

1.1 RPC 是什么 定义:RPC(Remote Procedure Call Protocol)——远程过程调用协议 ,RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC...

我最喜欢三大框架
38分钟前
0
0
系统监控-SpringBoot四大神器之Actuator

1. 为什么要使用Actuator来监控SpringBoot项目? 首先之前博客提到过使用JDK自带的JVM监控工具、Psi-Probe Tomcat监控工具以及Javamelody,也提到了Psi-Probe的强大,但是Psi-Probe针对jar包...

秋日芒草
40分钟前
5
0
pip通过setup.py和git仓库安装package

安装setup.py配置文件中的包 进入到setup.py所在目录 pip install -e . 1 安装git仓库中的包 pip install git+git clone 仓库地址.git 1 python代码打包为whl格式 python setup.py bdist_wh...

dillonxiao
42分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部