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

本文介绍了Swift语言中的错误处理机制,包括如何使用try、throw等关键字来实现错误的抛出与捕获。通过具体的代码示例展示了如何处理取值异常及自定义错误类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值