100 days of swiftui: 15
https://www.hackingwithswift.com/100/swiftui/15
오늘은 여태 배운 것을 다시 리뷰하는 시간이었다.
100 days of swiftui: How to handle function failure with optionals
https://www.hackingwithswift.com/quick-start/beginners/how-to-handle-function-failure-with-optionals
리뷰 도중 어제 이해하지 못한 optional try를 그나마 이해하게 되어서 이해한 대로 정리한다.
만약 프로그램 도중 에러가 발생해서 프로그램을 중단하는 것이 아닌, 에러가 발생했는지 여부가 중요한 것이라면 optional try이를 통해 optional을 반환하는 함수를 활용할 수도 있다. 함수 실행 중에 에러가 발생하지 않는다면 의도한 값이 반환될 것이고, 에러가 발생한다면 nil을 반환할 것이다.
optional try는 throws 함수 앞에 try?를 입력하고, 에러가 발생했을 때 혹은 에러 발생이 일어나지 않았을 때의 코드를 작성하면 된다.
enum UserError: Error {
case tooBig
}
func getUser(id: Int) throws -> String{
if id > 100 {
throw UserError.tooBig
} else {
return "Appropriate id"
}
}
// 1
if let user = (try? getUser(id: 100)) {
print("User: \(user)")
}
// 2
let user = (try? getUser(id: 1000)) ?? "Anonymous"
print(user)
결과:
User: Appropriate id
Anonymous
1의 경우 만약 getUser()
의 반환값이 에러가 아니라면 user에 관한 문장을 출력한다. 2의 경우 getUser()
의 반환값이 에러가 아니라면 그 반환값을 user
에 할당하고, 에러라면 "Anonymous"
를 할당한다.