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.