美文网首页swift
swift中异常处理try,throw学习小心得

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

作者: 顺扬sky | 来源:发表于2018-01-11 20:09 被阅读32次

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

    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.

    [苹果官方文档][1]
    [1]:https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ErrorHandling.html

    举例说明使用方式

    一,简单的取值异常获取

    创建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()
    

    打印

    年龄不合适
    

    三, 写在最后

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

    相关文章

      网友评论

        本文标题:swift中异常处理try,throw学习小心得

        本文链接:https://www.haomeiwen.com/subject/lubtoxtx.html