Ich suche nach einer Möglichkeit, mehrere Arten von Fehlern in einer catch
zu fangen. Ich habe versucht fallthrough
und das Komma getrennte Stil von einer switch-Anweisung und keiner funktioniert. Die docs sagen nichts über das Fangen mehrerer aber pattern 1
. Mir ist nicht klar, welche der Pattern-Syntaxen hier funktionieren würde.Fangen mehrere errorTypes?
Fehlerdefinitionen (Beispiel):
enum AppErrors {
case NotFound(objectType: String, id: Int)
case AlreadyUsed
}
Works:
do {
//...
} catch AppErrors.NotFound {
makeNewOne()
} catch AppErrors.AlreadyUsed {
makeNewOne()
} catch {
print("Unhandled error: \(error)")
}
nicht kompilieren lässt, ist es möglich, so etwas zu tun?
do {
//...
} catch AppErrors.NotFound, AppErrors.AlreadyUsed {
makeNewOne()
} catch {
print("Unhandled error: \(error)")
}
Wenn ich versuche, 'fangen lassen Fehler als AppErrors wo Fehler == .NotFound ', Bekomme ich die Fehlermeldung' binary operator == kann nicht auf zwei AppErrors-Operanden angewendet werden'. Ich denke, das liegt daran, dass diese errorTypes verknüpfte Werte haben. Gibt es einen Weg dahin? – SimplGy
Ich denke, die'ErrorType'-Erweiterung am Ende der Antwort kann wahrscheinlich dafür arbeiten. – nhgrif
Da es eine '== 'Implementierung zum Vergleich verwendet, funktioniert es auch nicht. Im Moment denke ich, dass nur eine Switch-Implementierung mehrere zugehörige errorTypes zusammenfassen kann. – SimplGy