Swift 的 try try? try! 的区别和代码演示

20 min read

在 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! 的用法和区别。需要根据实际情况选择使用哪种方式。