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)