【WIP】Swift4 异常处理, JSON处理
创建: 2018/03/24
更新: 2018/06/05 补充catch可以只带where不带模式
【任务表】TODO
异常处理语法 | |||||||||||||||||||||
异常的发生 |
抛出例外 thorw 式 ● 抛出的值的类型必须采用Error协议, 定义可抛出函数时不用声明抛出值类型(同一个函数内也可以抛出不同类型的) 是空协议 public protocol Error { 抛出值的类型的例 enum SampleError1: Error { // 抛出值类型的例 ● 声明可能抛出异常的函数, 在参数表(...)后面加上throws // throws 记在参数表 [()] 后面, 返回值 [ -> 类型] 前面 func sample() thorws // 不带参数和返回值 func sample(a: Int, b: Int) throws // 不带返回值 func sample(mode: Mode) throws -> Bool // 带参数和返回值 ● 声明可能抛出异常的构造函数 init(...) throws // 和函数一样, 只不过构造函数不写返回值 |
||||||||||||||||||||
异常的传播与捕捉 |
遇到抛出异常, 一层层往上抛, 直到遇到可以catch自己的catch ● 呼出可抛出异常的函数的, 如果能catch所有可能的异常就是普通函数 如果不能catch, 则自身也是可抛出异常的函数. 要带throws |
||||||||||||||||||||
呼出会抛出异常的函数的方法 |
呼出会抛出异常的都必须带try try 可抛出异常的函数 没有异常则和平常一样, 抛出异常则往上一次抛. 这么呼出的, 自身也是抛出异常的函数 ● do-catch do { catch所有可能的错误的话, 自身是普通函数。否则为会抛出异常的函数 ● try? 没有异常返回正常返回值, 异常返回nil 少用, 不好确定错误 ● try! 相当于作为不会抛出异常的函数来呼出 发生异常程序停止, 尽量不用 |
||||||||||||||||||||
do-catch |
do { ● 不带默认( catch {...} ) 的则不匹配往外throw错误 不带默认的catch内部用error来获取错误 |
||||||||||||||||||||
try?与try! |
● try? 没抛出错误则和普通函数一样, 发出错误则为nil. 返回型为T的, 用try则返回T? 用法: if let result = try? getReslt(mode: Mode.sample) { # if-let ● try! 没抛出错误和普通函数一样, 抛出错误则程序报错并停止运行 |
||||||||||||||||||||
会抛出错误的可选型函数与try? | 返回值为T??型 | ||||||||||||||||||||
终止处理与收尾处理 | |||||||||||||||||||||
访问控制 | |||||||||||||||||||||
断言(assertion)与测试 | |||||||||||||||||||||
可利用条件与预处理控制 | |||||||||||||||||||||
实例的序列化 | |||||||||||||||||||||
概念 |
把数据转为比特列 serialize / encode(特指内容方面) / archive(存入文件为目的) 比特列转为数据: deserialize / decode / unarchive |
||||||||||||||||||||
协议 |
|
||||||||||||||||||||
最新文章
- pthread 学习
- [Outlook] Outlook2013能收但无法发送邮件-0x800CCC13, 0x800CCC0B, 0x8004210B
- perl 脚本测试
- (转)使用Migrations更新数据库结构(Code First )
- 【七】注入框架RoboGuice使用:(Your First Custom Binding)
- nginx新手入门
- 必应词典--英语学习APP案例分析
- java导出word
- mysql-16进制、十进制互转
- arcgis api 3.x for js 入门开发系列十叠加 SHP 图层(附源码下载)
- Jenkins结合.net平台工具之ReportGenerator
- Spark新手入门——1.Scala环境准备
- 详解Linux查看实时网卡流量的几种方式(转)
- Tornado实现多线程、多进程HTTP服务
- JS 实现日期信息增加年数,月数,天数
- 20145234黄斐《网络对抗技术》实验八、Web基础
- 学习KNN
- Nginx安装及配置文件解释
- atitit.seo 发帖关键词以及链接的制作.doc
- SSH三大框架的知识题
热门文章
- POJ 2749 2SAT判定+二分
- PAT (Advanced Level) 1031. Hello World for U (20)
- 如何使用sqlalchemy获取某年某月的数据总和
- python执行系统命令的几种方法
- 跟着9张思维导图学JavaScript
- libpython2.7.so.1.0: cannot open shared object file: No such file or directory
- Linux 命令 sudo
- Fp关联规则算法计算置信度及MapReduce实现思路
- MySQL基础笔记(六) 存储过程与函数
- HDU 1824 Let&;#39;s go home (2-SAT判定)