throws
将异常抛出,交给调用者处理
- 先定义一个错误信息枚举,继承于 Error
- 再将异常需要的地方将异常抛出
- 注:如果有返回值,throws 关键字要写在返回值之前
enum CBToolError : Error{
case errorOne
case errorTwo
}
static func getName() throws -> String {
let a = arc4random_uniform(3)
if a == 0 {
throw CBToolError.errorOne
} else if a == 1 {
throw CBToolError.errorTwo
}
return "漫步者"
}
在调用的时候,必须对异常有处理,否则编译中就会报错
do-catch
处理异常
- 需联合 try 来使用
- 如果 getName() 没有抛出异常,就走 do 中的内容,抛出了异常,就走对应的 catch 中的内容
static func myTest() {
do {
let name = try CBTool.getName()
print(name)
} catch CBToolError.errorOne {
print("错误1")
} catch CBToolError.errorTwo {
print("错误2")
} catch {
print("其它错误")
}
}
try?
将值解析为可选(Optional)类型
- 如果抛出异常,则返回值为 nil
let name = try? getName()
//这里 name 类型为 String?
try!
直接当做不会抛出异常处理,如果出现异常则程序崩溃(非常不建议这么做,这样解析抛异常也就失去意义了
)
let name = try! getName()
网友评论