Swift 错误处理

错误处理:反映运行出错的细节,并回复程序的过程
1.可选类型仅处理值确实,错误处理可以针对不同的出错原因对不同的应对
2.一个函数可以加上throws关键字,便是可以处理错误,这个函数的调用者可以捕获(catch)这个错误并进行应对
3.当你调用可以抛出错误的函数,须在前面加上try关键字
4.处理更细分的错误情况,错误类型须遵从ErrorType协议

func aFoo() throws {
    print("小波的斗鱼直播间 57621")
}
try aFoo()


enum LearningObs : Error {
    case noMethod
    case noReading
    case noTool(tool:String)
}

func iosDev(method:Bool,style:Bool,hasTool:Bool) throws {
    guard method else {
        throw LearningObs.noMethod
    }
    guard style else {
        throw LearningObs.noReading
    }
    guard hasTool else {
        throw LearningObs.noTool(tool: "缺少Mac电脑")
    }
}

var budget = 7000
func buy(tool:String) {
    if budget >= 6000 {
        budget -= 6000
        print("您已经购买",tool,"花费6000元,余额:",budget)
    }else {
        print("资金不足")
    }
}

do {
    try iosDev(method: true, style: true, hasTool: true)
    print("恭喜,您已经开始学习IOS开发")
} catch LearningObs.noMethod {
    print("没有好的学习方法")
} catch LearningObs.noReading {
    print("不想看书,就看视屏吧")
} catch LearningObs.noTool(let tool){
    print(tool)
    buy(tool: "mac")
}

// 有时候仅关心结果有无,可以适应try?或者 try!来忽略错误细节
if let result = try? iosDev(method: true, style: true, hasTool: false) {
    print("恭喜进入学习")
}else {
    print("学习条件不满足哦")
}

try! iosDev(method: true, style: true, hasTool: true)
try! iosDev(method: true, style: true, hasTool: false)

你可能感兴趣的:(Swift 错误处理)