2022.10.04.
TIL / Swift
enum ErrorEnum: Error {
case maxNumber
}
func checkCount(number: Int) throws -> Bool {
if number > 8 {
throw ErrorEnum.maxNumber
}
return true
}
// do: 정상적인 케이스, catch: 에러 케이스
do {
let result = try checkCount(number: 10) // try는 do스코프 안에서 실행해야한다.
print(result)
} catch ErrorEnum.maxNumber {
print("8자리 이상입니다.")
}
do {
let result = try checkCount(number: 10)
print(result)
} catch {
print(error.localizedDescription) // 앱에 설정된 언어로 로컬라이징
if let error = error as? ErrorEnum {
switch error {
case .maxNumber:
print("8자리 이상입니다.")
}
}
}
// try?
// Optional try
// 옵셔널 타입으로 리턴
// 에러가 발생하면 nil을 리턴
let isCheck1 = try? checkCount(number: 3)
// try!
// Forced try
// 에러가 날 수 없는 경우에만 사용 가능
// 에러가 발생하면 런타임 에러
let isCheck2 = try! checkCount(number: 6)
func deferFunc() {
defer {
print("first")
}
print("second")
}
deferFunc() // "second", "first" 출력
defer
블록 안에 있는 코드는 가장 마지막에 실행된다.
defer
가 여러개 있으면 등록한 역순으로 실행된다.