swift中异常处理try,throw学习小心得

1,546 阅读1分钟

try,throw 引入

错误处理是对程序中的错误条件进行响应和恢复的过程。Swift提供了在运行时抛出、捕获、传播和操作可恢复错误的一流支持。

Error handling is the process of responding to and recovering from error conditions in your program. Swift provides first-class support for throwing, catching, propagating, and manipulating recoverable errors at runtime.

苹果官方文档

举例说明使用方式

一,简单的取值异常获取

创建user字典

// 创建字典
let user:[String:Any] = ["name":"yang", "age":20]

正常获取值

let name = user["name"] as! String

当字典中不存在key

let name = user["xiaoming"] as! String  // 此时会报error

安全的取值方法

func getValueByKey(key:String){
    guard let name = user[key] else {
          print("取值失败")
        return // throw
    }
    print(name)
}
getValueByKey(key: "name")
getValueByKey(key: "xiaoming")

打印的值

yang
取值失败

二,函数中的异常获取

枚举异常原因

enum UserError:Swift.Error{
    case noKey(message:String)         // key 无效
    case ageBeyond     // 年级超出
}

定义函数

func testAction() throws{
    guard let name = user["name"] else {
        print("取值失败")
        throw UserError.noKey(message: "没有此人")
    }
    guard let value = user["age"] else {
        throw UserError.noKey(message: "年龄无效")
    }
    let ageValue = value as! Int
    
    guard ageValue > 100 else{
        throw UserError.ageBeyond
    }
}

函数调用,抛出异常

func getUser() throws {
    do{
        try testAction()
    }catch let UserError.noKey(message){
        print("error:\(message)")
    }catch UserError.ageBeyond{
        print("年龄不合适")
    }catch{
        print("other error")
    }
}

使用函数

try getUser()

打印

年龄不合适

三, 写在最后

菜鸟一枚,望各位大佬指点.(一直在学习中....)

hi 各位大佬,如果您喜欢我的文章,可以在以下平台关注我

顺扬sky个人网站

微博:顺扬sky
简书:顺扬sky
掘金:顺扬sky