在 Swift 中,try / try? / try! 用于处理可能抛出错误的表达式或函数调用。
try:
使用 try 关键字表示对可能抛出错误的代码段进行错误处理。使用此操作符时,必须将代码块放在 do-catch 语句中,或者将错误传递给上层调用。如果 try 块中的代码抛出错误,控制权将跳转到下一个 catch 块。
例如:
// 假设这是一个抛出错误的函数
func someThrowingFunction() throws -> Int {
// ...
}
do {
let x = try someThrowingFunction()
// 处理可能抛出的错误
} catch {
// 捕获并处理错误
}
try?:
使用 try? 表示对可能抛出错误的代码段进行尝试,并将结果转换为可选值。如果代码块抛出错误,表达式将返回 nil ,否则将返回一个可选的结果。
例如:
// 假设这是一个抛出错误的函数
func someThrowingFunction() throws -> Int {
// ...
}
let x = try? someThrowingFunction()
if let result = x {
// 处理正常情况
} else {
// 错误处理
}
try!:
使用 try! 表示将可能抛出错误的代码段标记为永远不会失败,并且不考虑错误发生的情况。如果代码块抛出错误,程序将崩溃。
例如:
// 假设这是一个抛出错误的函数
func someThrowingFunction() throws -> Int {
// ...
}
let x = try! someThrowingFunction()
// 此时 x 已经确定不会抛出错误
// 处理 x 的值
需要注意的是,try! 应该谨慎使用,因为当发生错误时,应用程序将崩溃。建议只在开发期间使用 try! 进行快速测试。
上述是 try / try? / try! 的用法和区别。需要根据实际情况选择使用哪种方式。