Sintaxis rápida de do-try-catch

Intento comprender la nueva cuestión de manejo de errores en Swift 2. Esto es lo que hice: Primero declare una enumeración de error:

enum SandwichError: ErrorType {
    case NotMe
    case DoItYourself
}

Y luego declaró un método que arroja un error (no una excepción amigos. Es un error). Aquí está ese método:

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

    return sandwich
}

El problema es del lado de la llamada. Aquí está el código que llama a este 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")
}

Después de lado compilador de línea diceErrors thrown from here are not handled because the enclosing catch is not exhaustive. Pero en mi opinión es exhaustivo porque solo hay dos casos enSandwichError enum.

Para las declaraciones regulares de cambio, Swift puede comprender que es exhaustivo cuando se maneja cada caso.

Respuestas a la pregunta(5)

Su respuesta a la pregunta