String als Fehler in Swift

Am 18.08.2021 um 20:15
von ridcully, Kategorie: Blog, Tags: Swift Code

Fehler sind essentiell in jedem Programm. In Swift erstellt man dafür normalerweise ein Fehler-Enum:

enum MeinEigenerFehler: Error {
    case eins
    case zwei
}

Hat man eine Fehler-Struktur erstellt, kann man diese relative einfach nutzen:

throw MeinEigenerFehler.eins

Leider ergibt das noch keine ordentliche Fehlerbeschreibung. Möchte man nun eine saubere Fehlerbeschreibung und diese z. B. dem Nutzer anzeigen, so muss man diese Beschreibung noch zusätzlich angeben:

extension MeinEigenerFehler: LocalizedError {
    var errorDescription: String? {
        switch self {
        case .eins:
            return "Fehler eins"
        case .zwei
            return "Fehler zwei"
        }
    }
}

Für größere Projekte ist das ist definitiv die beste Lösung. Man kann direkt auf einen Fehler prüfen error = MeinEigenerFehler.eins und bekommt eine ordentliche Fehlermeldung angezeigt, wenn man den Fehler als String zurück gibt.

Für kleinere Projekte bedeutet das aber, dass man relativ viel Code schreiben muss, wenn man viele kleine Fehlermeldungen hat. Das artet dann schnell in vielen Fehler-Strukturen, mit einer Menge Code.

Um sich das Leben ein wenig leichter zu machen, kann man jedoch auch direkt eine Erweiterung der String-Klasse schreiben und damit direkt einen String als Fehler werfen:

extension String: LocalizedError {
    public var errorDescription: String? { return self }
}

throw "Fehler eins"

Build @ 2021-10-24T11:13:51+02:00