知识卡片

try 的三种写法对应对失败的三种确定程度

专业/工作 · 723

内容

调用一个可能抛错的函数,Swift 按”我对这次调用会不会失败有多确定”给了三种粒度的写法:do-catch 配合 try 是最谨慎的,把每种自定义错误类型(通常是携带关联值的枚举,呼应 [[枚举关联值是带数据的标签联合]])分别匹配、分别处理;try? 是折中,不关心具体失败原因,只把结果整体降级成一个 [[Optional 用类型系统表达”值可能不存在”]] 的可选值,成功有值、失败为 nil;try! 是最激进的,相当于向编译器断言”这次调用绝对不会失败”,一旦判断错了、真的抛出了错误,程序会直接崩溃。三种写法不是随便选,而是分别对应”必须区分处理各种失败原因”“只关心成功与否,不关心为什么”“我有十足把握不会失败”这三种不同的调用场景。

参考来源

《Swift全解析:新式iOS实战开发》第17章《Swift错误处理》