import Foundation
enum ErrorScenarios: Error {
case invalidAge
case invalidEmail
case incorrectData
}
func age(age:Int) throws {
if age < 20 {
throw ErrorScenarios.invalidAge
}
print("You have a valid age of \(age)")
}
extension ErrorScenarios: LocalizedError {
var localizedDescription: String {
switch self {
case .incorrectData:
return "Incorrect data provided"
case .invalidAge:
return "Incorrect age was provided"
case .invalidEmail:
return "Incorrect email provided"
}
}
}
在这里,我使用 do catch 块来捕获 invalidAge 错误场景,我不太确定这是否正确?当我在操场上跑步时,catch 块永远不会被击中。
do {
try age(age: -23)
}
catch {
throw ErrorScenarios.invalidAge
}
在这里,作为 do catch 块的替代方法,我通过将其设为可选来处理错误,因此我猜测 do catch 块不是必需的。但是,在打印结果时,它返回 Optional(() 而不是可选的 Int。如果我出错了,我们将不胜感激。
let result = try? age(age: 34)
print(result)