Error 선언
enum TestError : Error {
case outOfRange
case invalidInput(testNum : Int)
}
- 에러를 선언시 Error 프로토콜을 구현하도록 한다.
Error를 발생 시킬 메소드 선언
func method(param: Int) throws -> Int {
guard param > 0 else {
throw TestError.outOfRange
}
}
- 에러를 던질 가능성이 있는 메소드에 throws 선언
- 에러 발생 시 throw로 에러를 던진다.
에러 발생 가능성이 있는 메소드(throws 선언 되어 있는 메소드) 는 실행시 try 구문이 필요하다.
try 구문 사용 호출
do {
let result = try method(param: -1)
} catch TestError.outOfRange {
print("outOfRange")
} catch TestError.invalidInput(testNum: let num) {
print(num)
} catch {
print("UNKNOWN ERROR")
}
//switch 구문 사용
do {
let result = try method(param: -1)
} catch {
switch error {
case TestError.outOfRange:
print("outOfRange")
case TestError.invalidInput(testNum: let num):
print(num)
default:
print("UNKNOWN ERROR")
}
}
- throws가 달린 메소드를 실행하려 할 땐 try 구문이 필요하다.
- try 구문 사용시 do {} catch {} 문으로 감싼다.
try? 구문 사용
let resultOptional = try? method(param: -1)
- 메소드 실행시 오류가 발생함을 인정하고, 메소드 성공시 optional으로 래핑, 실패시 optional(nil) 을 리턴한다.
try! 구문 사용
let resultOptional = try! method(param: -1)
- 메소드 실행시 오류가 발생하지 않음을 확신할 때 사용한다. 바로 언래핑 된 리턴타입을 가질 수 있으나, 오류 발생시 앱이 종료된다.
'IOS' 카테고리의 다른 글
ObservableObject 와 Codable 같이 사용하기 (1) | 2022.12.31 |
---|---|
Swift enum (0) | 2022.12.31 |
UIKit 커스텀 애니메이션 (0) | 2022.12.20 |
SwiftUI NavigationView BackButton Custom (0) | 2022.11.05 |
SwiftUI 에서 UIKit 사용하기 (0) | 2022.11.01 |