Swift:
Fouten afhandelen
Hoe te:
Swift gebruikt foutafhandeling met do
, try
en catch
blokken. Laten we eens kijken:
enum FileError: Error {
case fileDoesNotExist
case noPermission
}
func readFile(atPath path: String) throws -> String {
// Stel je voor dat we hier wat logica hebben om te controleren of een bestand bestaat en of we toestemming hebben om het te lezen
let fileExists = false
let havePermission = true
if !fileExists {
throw FileError.fileDoesNotExist
}
if !havePermission {
throw FileError.noPermission
}
return "Inhoud van het bestand gaat hier"
}
do {
let fileContent = try readFile(atPath: "/path/to/file")
print(fileContent)
} catch FileError.fileDoesNotExist {
print("Oeps! Bestand niet gevonden.")
} catch FileError.noPermission {
print("Ah! Geen toestemming om het bestand te lezen.")
} catch {
print("Er is een onbekende fout opgetreden.")
}
Voorbeelduitvoer:
Oeps! Bestand niet gevonden.
Diepere Duik
Foutafhandeling was niet altijd zo soepel als het nu is. In Objective-C zou je omgaan met pointers naar NSError-objecten, wat onhandig aanvoelde. Nu hebben we een eleganter systeem met Swift enums en het Error
protocol.
Swift’s throw
laat ons signaleren dat er iets mis is gegaan. do
blokken werken als foutbewuste domeinen, try
prefix roept het risicovolle op, en catch
handelt dingen af als ze misgaan.
Optionals zijn een alternatief voor situaties die niet echt “fout” status zijn, maar toch “geen resultaat” kunnen hebben. Ze zijn een beetje als Schrödinger’s variabelen—ze hebben een waarde of ze hebben het niet.
Voor echt diepgang, bekijk Result
types, die zijn snazzy hybriden tussen gewone-retour en fout patronen.
Zie Ook
- Officiële Swift Foutafhandeling Gids: Apple Docs
- Swift Foutafhandeling Beste Praktijken: RayWenderlich.com
- Geavanceerde Foutafhandeling in Swift: Medium Artikel