[Swift 공식문서] The Basics 정리 (8) - Error Handling
https://docs.swift.org/swift-book/LanguageGuide/TheBasics.html
The Basics — The Swift Programming Language (Swift 5.6)
The Basics Swift is a new programming language for iOS, macOS, watchOS, and tvOS app development. Nonetheless, many parts of Swift will be familiar from your experience of developing in C and Objective-C. Swift provides its own versions of all fundamental
docs.swift.org
에러 핸들링은 실패의 이유가 무엇인지 알 수 있게 해준다.
함수는 에러 조건을 만나면 에러를 낸다. 해당 함수의 caller는 그 에러를 잡아내고 적절하게 반응할 수 있다.
func canThrowAnError() throws {
// this function may or may not throw an error
}
함수 선언시 throws 키워드를 추가해줌으로써 에러를 낼 수 있음을 알릴 수 있다. 에러를 낼 수 있는 그 함수를 부르면 해당 표현 앞에 try가 붙는다. 스위프트는 자동적으로 에러를 해당 범위 바깥으로 전달하여 catch 구문으로 넘긴다.
do {
try canThrowAnError()
// no error was thrown
} catch {
// an error was thrown
}
do 구문은 새로운 포함 범위를 만들어내는데, 이는 에러가 하나 이상의 catch 구문으로 넘겨질 수 있도록 한다.
func makeASandwich() throws {
// ...
}
do {
try makeASandwich()
eatASandwich()
} catch SandwichError.outOfCleanDishes {
washDishes()
} catch SandwichError.missingIngredients(let ingredients) {
buyGroceries(ingredients)
}
위의 예시에서 makeASandwich() 함수는 깨끗한 그릇이 없거나 재료가 부족한 경우에 오류를 낼 것이다. 에러를 낼 수 있는 함수이기 때문에 함수 실행부분은 try 표현으로 감싸진다. 함수 실행부를 do 구문으로 감싸주기 때문에 에러가 난다면 catch 절로 넘어갈 것이다. 에러가 없다면 eatASandwich() 함수가 실행된다.