知识卡片

三种异常处理方式的确定性递减

专业/工作 · 635.c

内容

Swift 用 throws 标记函数可能抛出异常,调用方处理异常时可按需要的严谨程度选三种方式之一: do-catch 结构完整保留异常类型、可以对不同错误分别写处理逻辑,是最严谨也最啰嗦的一种; try? 把”是否抛出异常”直接压扁成一个可选值——正常返回其结果,出错就变成 nil,适合只关心 成功与否、不关心具体错误原因的场景;try! 则是断言这个调用绝不会抛异常,一旦断言错误, 程序直接崩溃,只应在开发者能确定不会出错时使用。发散:三者构成一条”处理精细度换代码简 洁度”的光谱,与[[问号叹号的四种语义|可选值拆包]]的 if-let / ?? / ! 三级阶梯是同构的设计 思路——错误处理和空值处理在 Swift 里被设计成了同一套”确定性递减、简洁度递增”的语法家族。

参考来源

《Swift 4从零到精通iOS开发》第10章《内存管理与异常处理》