
try? 将可能抛出的错误转换为可选值(Optional):
如果操作成功:返回包装在 Optional 中的结果
如果操作失败(抛出错误):返回 nil
传统的错误处理(do-try-catch):
Swift
do {
let result = try someThrowingFunction()
print("成功: \(result)")
} catch {
print("失败: \(error)")
}
使用 try?:
Swift
let result = try? someThrowingFunction()
if let result = result {
print("成功: \(result)")
} else {
print("失败")
}
示例1:JSON 解析
Swift
struct User: Codable {
let name: String
let age: Int
}
let jsonString = """
{"name": "张三", "age": 25}
"""
// 传统方式
do {
let data = jsonString.data(using: .utf8)!
let user = try JSONDecoder().decode(User.self, from: data)
print("用户: \(user.name)")
} catch {
print("解析失败: \(error)")
}
// 使用 try?
if let data = jsonString.data(using: .utf8),
let user = try? JSONDecoder().decode(User.self, from: data) {
print("用户: \(user.name)") // 成功时执行
} else {
print("解析失败") // 失败时执行
}