try和try?还有try!区别
try
使用 try 关键字前缀的表达式表示该表达式可能会抛出错误。你必须在一个 do-catch 语句中使用它来捕获潜在的错误。
do {
let result = try someFunctionThatThrows()
// Use the result.
} catch {
print("An error occurred: \(error)")
}
try?
使用 try? 关键字前缀的表达式将结果转换为可选项。如果函数抛出错误,它会返回 nil,否则它会返回结果。
if let result = try? someFunctionThatThrows() {
// Use the result.
} else {
print("An error occurred.")
}
try!:
使用 try! 关键字前缀的表达式表示你确定该函数不会抛出错误。如果函数实际上抛出错误,程序会产生运行时崩溃。
let result = try! someFunctionThatDefinitelyDoesNotThrow()
// Use the result.
⚠️ 警告:应谨慎使用 try!。只有当你确定函数永远不会在任何情况下抛出错误时,才应使用它。
总结
- try 需要配合 do-catch 语句使用,以处理潜在的错误。
- try? 使你能够处理错误为可选值,如果发生错误,它返回 nil。
- try! 是一个断言,如果发生错误,它会导致运行时崩溃。