Profile Image

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? try!

// 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 가 여러개 있으면 등록한 역순으로 실행된다.

Copyright © 2022 HHJ