Error Handling
Defer Cleanup
defer runs cleanup code when execution leaves the current scope.
Close work in one place
defer_cleanup.swift
func processTask(_ shouldFail: Bool) -> String {
var steps: [String] = []
steps.append("open")
defer {
steps.append("close")
print(steps.joined(separator: ">"))
}
if shouldFail {
steps.append("fail")
return "failed"
}
steps.append("work")
return "done"
}
let shouldFail =
let outcome = processTask(shouldFail)
print(outcome)
func processTask(_ shouldFail: Bool) -> String {
var steps: [String] = []
steps.append("open")
defer {
steps.append("close")
print(steps.joined(separator: ">"))
}
if shouldFail {
steps.append("fail")
return "failed"
}
steps.append("work")
return "done"
}
let shouldFail =
let outcome = processTask(shouldFail)
print(outcome)
defer
A deferred block keeps cleanup near setup while still running after the main work path finishes.