Назад к вопросам
JuniorТеорияЧасто
Что выведет программа?
enum ParseError: Error {
case badFormat
}
func parse(_ text: String) throws -> Int {
guard let n = Int(text) else {
throw ParseError.badFormat
}
return n
}
let a = (try? parse("8")) ?? -1
let b = (try? parse("8x")) ?? -1
print(a, b)8 -1
- Ждать
8 0, считая, чтоtry?превращает ошибку в ноль. Он даётnil, а что встанет на его место, решает?? -1. - Ждать аварийного завершения, путая
try?сtry!. Программу на ошибке останавливает толькоtry!, аtry?превращает ошибку вnil.
- Что окажется в
b, если убрать скобки вокругtry? parse("8x")? - Когда
try?не подходит, потому что вызывающему нужна причина ошибки?