Swift基础 错误处理
来源:互联网 发布:武田义胜 知乎 编辑:程序博客网 时间:2024/05/20 08:26
Swift的错误处理和Java的相似!!
自定义错误
struct ValueError : Error { let reason: String}
实现Error协议便可自定义错误。
抛出异常
fun getValue100(error: Bool) throws -> Int { if error { throw ValueError(reason: "100") } return 100}
其抛出异常也和Java的很像相似。
传递错误
和Java一样,也可以将错误传递出去
fun getValue() throws -> Int { return try getValue100(false)}
这样的话,就先不会处理,交给外部调用tryError方法时处理,不过还是要“try”关键字。
错误处理 Do-Catch
Swift的错误捕捉和处理
// 如果不想处理ValueErrordo { try getValue100(true)} catch { ...}// 如果想判断错误来自于ValueErrordo { try getValue100(true)} catch is ValueError { ...}// 如果想要处理ValueErrordo { try getValue100(true)} catch let error as ValueError { ...}
将错误转成可选值
如果调用方法(可能会抛出错误)有返回值,而且你可能不太想处理抛出的错误,你可以把这个方法(加关键字)赋给一个变量,那么这个变量就是一个可选类型。
var value = try? getValue100(true) // value此时的类型是Int?,可能为nilif let v = value { print("value is \(v)")}
利用这种方式,我们可以写出比较优雅的代码
func getValue100(error: Bool) throws -> Int { if error { throw ValueError(reason: "100") } return 100}func getValue200(error: Bool) throws -> Int { if error { throw ValueError(reason: "200") } return 200}func getValue() -> Int? { if let value = try? getValue100(error: false) { return value } if let value = try? getValue200(error: false) { return value } return nil}
禁止错误传递
虽然getValue100()方法可能会报错,但是如果传入为false的话,肯定不会报错,我们可以禁止错误传递
let value = try! getValue100(error: false)
到此,应该大概能猜出“!”的意义了吧,“!”一般用于强制性的操作,如可选类型。
阅读全文
0 0
- Swift基础 错误处理
- Swift基础(九):错误处理
- swift 错误处理
- Swift(十八、错误处理)
- Swift 错误处理
- Swift-错误处理
- Swift 错误处理
- swift 错误处理
- Swift错误处理
- Swift 中的错误处理
- Swift错误处理(Error Handling)
- 神奇的 Swift 错误处理
- Swift初体验-错误处理
- 详解Swift中的错误处理
- swift学习错误处理流程
- swift基础之错误异常
- swift基础学习(06)[必要构造器,可空链式调用,错误处理,类型转换]
- 错误处理基础指南
- 用函数指针作为函数的返回值 1.指针函数的定义 顾名思义,指针函数即返回指针的函数。其一般定义形式如下: 类型名 *函数名(函数参数表列); 其中,后缀运算符括号“()
- 数据帧、数据包、数据报以及数据段
- ubuntu17.10卸载自带的jdk从
- NOIP复赛复习(十三)图论算法巩固与提高
- Java多线程工具包java.util.concurrent---LinkedBlockingQueue
- Swift基础 错误处理
- Git的17条基本用法
- Dubbo/Dubbox的服务消费(一)- 服务代理的创建
- Faster-RCNN使用时Error parsing text-format caffe.NetParameter
- hello.ko---Makefile
- Line论文中的Alias Sampling Algorithm 分析
- 回首Java——堆排序
- 会场安排问题
- UE4实现纹理缩放(将纹理坐标进行缩放)