728x90
예외
Error 프로토콜을 사용해서 표현함
- 주로 열거형을 사용해서 오류의 종류를 나타냄
enum ErrorName: Error {
case case1
case case2
case case3
}
예외 발생
오류 발생의 여지가 있는 메서드는 throws를 사용해서 오류를 내포하는 함수임을 표시함
예시
class VendingMachine {
// skip
func receiveMoney(_ money: Int) throws {
guard money > 0 else {
throw VendingMachineError.invalidInput
}
self.deposited += money
}
func vend(numberOfItems numberOfItemsToVend: Int) throws -> String {
// skip...
}
}
예외 처리
프로그램이 종료되지않도록 발생한 예외에 대한 처리가 필요함
오류가 발생할 여지가 있는 throws 함수는 try를 사용해서 호출해야함
do-catch
가장 정석적인 방법으로 모든 오류 케이스에 대응함
do {
try machine.receiveMoney(0)
} catch VendingMachineError.invalidInput {
print("입력이 잘못되었습니다.")
} catch ... {}
// 하나의 catch 블럭에서 switch 구문을 사용해서 분류할수 있음
do {
try machine.receiveMoney(0)
} catch /*(let error)*/{
switch error {
case VendingMachineError.invalidInput:
print("입력이 잘못되었습니다.")
case ...:
default:
}
}
- 케이스별로 처리할 필요없으면 간략화 해서 사용해도 됨
- do { try func() } catch { }
- do { try func() }
try?와 try!
try?
오류 발생시 결과값을 nil로 돌려받을수 있음.
정상 동작후에는 옵셔널 타입으로 정상 반환값을 돌려받음
try!
오류가 발생하지 않을 것이라는 강력한 확신을 가질때 사용
정상동작후에 바로 결과값을 돌려받음
오류가 발생하면 런타임 오류가 발생함
'STUDY > Swift & iOS' 카테고리의 다른 글
[Swift] Section 5(50~58) - Swift Programming Basics Challenge (0) | 2023.01.18 |
---|---|
[Swift] 38. Responding to User Interactions with IBActions (0) | 2023.01.16 |
Swift 문법 기초 7 (0) | 2022.06.27 |
Swift 문법 기초 6 (0) | 2022.06.25 |
Swift 문법 기초 5 (0) | 2022.06.21 |