Swift 面试题
目录

Swift 中 try, try?, try! 的区别是什么?

· 约 2 分钟读完 · 第 130 / 196 章

推荐答案

在 Swift 中,try、try? 和 try! 是用于处理可能抛出错误的表达式的关键字。它们的区别如下:

  • try: 用于标记可能抛出错误的表达式,并且必须与 do-catch 语句结合使用,以便捕获和处理错误。
  • try?: 将可能抛出错误的表达式转换为可选类型。如果表达式抛出错误,结果为 nil;否则结果为表达式的值。
  • try!: 强制解包可能抛出错误的表达式。如果表达式抛出错误,程序会崩溃;否则结果为表达式的值。

本题详细解读

try 的使用

try 关键字用于标记可能抛出错误的表达式。它必须与 do-catch 语句结合使用,以便在错误发生时捕获并处理错误。例如:

在这个例子中,如果 someThrowingFunction 抛出错误,catch 块会捕获并处理错误。

try? 的使用

try? 将可能抛出错误的表达式转换为可选类型。如果表达式抛出错误,结果为 nil;否则结果为表达式的值。例如:

在这个例子中,如果 someThrowingFunction 抛出错误,result 将为 nil,否则 result 将包含函数返回的值。

try! 的使用

try! 强制解包可能抛出错误的表达式。如果表达式抛出错误,程序会崩溃;否则结果为表达式的值。例如:

在这个例子中,如果 someThrowingFunction 抛出错误,程序会崩溃。因此,try! 应该仅在确定表达式不会抛出错误时使用。

总结

  • try: 必须与 do-catch 结合使用,用于捕获和处理错误。
  • try?: 将结果转换为可选类型,错误时返回 nil。
  • try!: 强制解包,错误时程序崩溃,适用于确定不会抛出错误的场景。