《从零开始学Swift》学习笔记(Day54)——抛出错误
来源:互联网 发布:递归算法java1到100 编辑:程序博客网 时间:2024/05/11 04:28
原创文章,欢迎转载。转载请注明:关东升的博客
能放到try后面调用函数或方法都是有要求的,他们是有可能抛出错误,在这些函数或方法声明的参数后面要加上throws关键字,表示这个函数或方法可以抛出错误。
声明抛出错误方法示例代码如下:
//删除Note记录方法func remove(model: Note) throws { ...}//查询所有记录数据方法func findAll() throws -> [Note] { ...}
上述代码remove(_:)方法没有返回值,throws关键字放到参数后面。findAll()有返回值throws关键字放到参数和返回值类型之间。
在函数或方法中抛出错误
一个函数或方法能够声明抛出错误,是因为在函数或方法中产生并抛出了错误,这样函数或方法声明抛出错误才有实际的意义。
在产生并抛出错误方式:
在函数或方法中通过throw语句,人为地抛出错误。
在函数或方法中调用的其他可以抛出错误函数或方法,但是没有捕获处理,会导致错误被传播出来。
示例代码如下:
//删除Note方法func remove(model: Note) throws { guard let date = model.date else { //判断抛出时候是有了guard语句 //抛出"主键为空"错误 throw DAOError.PrimaryKeyNull } //比较日期主键是否相等 for (index, note) in listData.enumerate() where note.date == date { listData.removeAtIndex(index) }} //查询所有数据方法func findAll() throws -> [Note] { guard listData.count > 0 else { //判断抛出时候是有了guard语句 //抛出"没有数据"错误。 throw DAOError.NoData } return listData} func printNotes() throws { //声明抛出错误 let datas = try findAll() for note in datas { print("date : \(note.date!) - content: \(note.content!)") }}try printNotes()
guard语句最擅长处理这种早期判断,条件为false情况下抛出错误。
findAll()语句本身有可能产生错误,但是并没有使用catch语句捕获并处理,这样就导致了这个错误传播给该函数或方法的调用者,如果它的调用者也都不捕获处理,那么最后程序会出现运行期错误。
欢迎关注关东升新浪微博@tony_关东升。
关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息
更多精品iOS、Cocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com
智捷课堂论坛网站:http://51work6.com/forum.php
0 0
- 《从零开始学Swift》学习笔记(Day54)——抛出错误
- 《从零开始学Swift》学习笔记(Day54)——抛出错误
- 《从零开始学Swift》学习笔记(Day 52)——Cocoa错误处理模式
- 《从零开始学Swift》学习笔记(Day 53)——do-try-catch错误处理模式
- 《从零开始学Swift》学习笔记(Day 52)——Cocoa错误处理模式
- 《从零开始学Swift》学习笔记(Day 53)——do-try-catch错误处理模式
- 《从零开始学Swift》学习笔记(Day 1)——我的第一行Swift代码
- 《从零开始学Swift》学习笔记(Day 2)——使用Web网站编写Swift代码
- 《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字
- 《从零开始学Swift》学习笔记(Day4)——用Playground工具编写Swift
- 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
- 《从零开始学Swift》学习笔记(Day 56)—— Swift编码规范之命名规范
- 《从零开始学Swift》学习笔记(Day 3)——Swift 2.0之后增加的关键字
- 《从零开始学Swift》学习笔记(Day4)——用Playground工具编写Swift
- 《从零开始学Swift》学习笔记(Day 17)——Swift中数组集合
- 《从零开始学Swift》学习笔记(Day 56)——Swift编码规范之命名规范
- 《从零开始学Swift》学习笔记(Day 28)——总结使用问号(?)和感叹号...
- 《从零开始学Swift》学习笔记(Day5)——我所知道的标识符和关键字
- Flume thrift source C++ Demo
- Gitolite主从服务器搭建(centos6.2 32bit)
- JavaScript onkeyup事件实现仿验证码判断
- android内存分析工具MAT
- LeetCode:110. Balanced Binary Tree
- 《从零开始学Swift》学习笔记(Day54)——抛出错误
- 大数据的梦想
- JavaScript RegExp.$1...$9 属性详解
- 色度抽样
- Java 实现导出excel表 POI
- Activiti 5.17 实体对象、类、数据库表的映射
- Java实现截图并保存到本地
- HTML5:理解head
- Canvas基本视频引用