Sintaxe rápida de tentar, pegar

Eu tento entender o novo problema de manipulação de erros no swift 2. Aqui está o que eu fiz: declarei primeiro um enum de erro:

enum SandwichError: ErrorType {
    case NotMe
    case DoItYourself
}

E então eu declarei um método que gera um erro (não pessoal de exceção. É um erro). Aqui está esse método:

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

    return sandwich
}

O problema é do lado de chamada. Aqui está o código que chama esse método:

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")
}

Depois dedo compilador de linha dizErrors thrown from here are not handled because the enclosing catch is not exhaustive. Mas, na minha opinião, é exaustivo, porque há apenas dois casos emSandwichError enum.

Para declarações regulares de troca, o swift pode entender que é exaustivo quando todos os casos são tratados.

questionAnswers(5)

yourAnswerToTheQuestion