如何在Swift里进行错误处理
错误表示
- 在Swift中如果我们要定义一个表示错误的类型非常简单,只要遵循Error协议就可以了,我们通常用枚举或结构体来表示错误类型,枚举可能用的多些,因为它能更直观的表达当前错误类型的每种错误细节
![](https://img.haomeiwen.com/i1367029/d00307b2d71b645a.png)
image-20230313211855815.png
如何抛出错误
- 函数、方法和初始化器都可以抛出错误。需要在参数列表后面,返回值前面加throws关键字
![](https://img.haomeiwen.com/i1367029/8be6c1e0b7b2ac58.png)
image-20230313212205756.png
![](https://img.haomeiwen.com/i1367029/e58816428f19d439.png)
image-20230313212247752.png
![](https://img.haomeiwen.com/i1367029/3980523e8fbfdc5e.png)
image-20230313212530628.png
使用Do-Catch做错误处理
- 在Swift中我们使用do - catch块对错误进行捕获,当我们在调用一个throws声明的函数或方法时,我们必须把调用语句放在do语句块中,同时do语句块后面紧接着使用catch语句块
![](https://img.haomeiwen.com/i1367029/8e16e9f437b776a0.png)
image-20230313212809244.png
![](https://img.haomeiwen.com/i1367029/4bad2fa33cb42893.png)
image-20230313212919725.png
try?
- try?会将错误转换为可选值,当调用try?+函数或方法语句时候,如果函数或方法抛出错误,程序不会发崩溃,而返回一个nil,如果没有抛出错误则返回可选值
![](https://img.haomeiwen.com/i1367029/a20876397ce91ace.png)
image-20230313213235203.png
try!
- 如果你确信一个函数或者方法不会抛出错误,可以使用try!来中断错误的传播。但是如果错误真的发生了,你会得到一个运行时错误
![](https://img.haomeiwen.com/i1367029/6c929fdb115e941e.png)
image-20230313213402545.png
指定退出的清理动作
- defer关键字:defer block里的代码会在函数retuen之前执行,无论函数使从哪个分支return的,还是有throw,还是自然而然走到最后一行
![](https://img.haomeiwen.com/i1367029/25d880559aaab51a.png)
image-20230313213551259.png
网友评论