Код IT
← Каталог

Обработка ошибок в Swift — `Result` и `throws` — два способа выразить сбой

Фрагмент из «Обработка ошибок в Swift»: `Result` и `throws` — два способа выразить сбой.

Plain text main.swift
func parseAgeResult(from text: String) -> Result<Int, ParseError> {
    do {
        return .success(try parseAge(from: text))
    } catch let error as ParseError {
        return .failure(error)
    } catch {
        return .failure(.notANumber(text))
    }
}

switch parseAgeResult(from: "17") {
case .success(let age):
    print(age)
case .failure(let error):
    print(error.localizedDescription)
}
func parseAgeResult(from text: String) -> Result<Int, ParseError> {
    do {
        return .success(try parseAge(from: text))
    } catch let error as ParseError {
        return .failure(error)
    } catch {
        return .failure(.notANumber(text))
    }
}

switch parseAgeResult(from: "17") {
case .success(let age):
    print(age)
case .failure(let error):
    print(error.localizedDescription)
}