Swift Do-Try-Catch-Syntax
Ich versuche, neue Fehlerbehandlungssachen in Swift 2 zu verstehen. Folgendes habe ich getan: Ich habe zuerst eine Fehleraufzählung deklariert:
enum SandwichError: ErrorType {
case NotMe
case DoItYourself
}
Und dann habe ich eine Methode deklariert, die einen Fehler auslöst (keine Ausnahme, Leute. Es ist ein Fehler.). Hier ist diese Methode:
func makeMeSandwich(names: [String: String]) throws -> String {
guard let sandwich = names["sandwich"] else {
throw SandwichError.NotMe
}
return sandwich
}
Das Problem ist von der anrufenden Seite. Hier ist der Code, der diese Methode aufruft:
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")
}
Nach demdo
Line Compiler sagtErrors thrown from here are not handled because the enclosing catch is not exhaustive
. Aber meiner Meinung nach ist es erschöpfend, weil es in @ nur zwei Fälle gibSandwichError
enum.
Für reguläre switch-Anweisungen kann swift verstehen, dass es in jedem Fall erschöpfend ist.