Быстрый синтаксис do-try-catch

Я попытаюсь понять новую вещь по обработке ошибок в swift 2. Вот что я сделал: я сначала объявил enum:

enum SandwichError: ErrorType {
    case NotMe
    case DoItYourself
}

А потом я объявил метод, который выдает ошибку (не исключение, ребята. Это ошибка.). Вот этот метод:

func makeMeSandwich(names: [String: String]) throws -> String {
    guard let sandwich = names["sandwich"] else {
        throw SandwichError.NotMe
    }

    return sandwich
}

Проблема с вызывающей стороны. Вот код, который вызывает этот метод:

let kitchen = ["sandwich": "ready", "breakfeast": "not ready"]

do {
    let sandwich = try makeMeSandwich(kitchen)
    print("i eat it \(sandwich)")
} catch SandwichError.NotMe {
    print("Not me error")
} catch SandwichError.DoItYourself {
    print("do it error")
}

Послеdo Линейный компилятор говоритErrors thrown from here are not handled because the enclosing catch is not exhaustive, Но, на мой взгляд, это исчерпывающий, потому что есть только два случая вSandwichError ENUM.

Для регулярных операторов переключения swift может понять, что он исчерпывающий, когда обрабатывается каждый случай.

Ответы на вопрос(5)

Ваш ответ на вопрос