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.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage