카테고리 없음

[Swift] do try catch를 위한 Error 정의하기

SweetDev 2023. 4. 10. 19:54

do-try-catch문에서 throw를 하기 위한 error 타입을 가장 간단하게 어떻게 정의할 수 있을까?

enum VendingMachineError: Error {
    case invalidSelection
    case insufficientFunds(coinsNeeded: Int)
    case outOfStock
}

공식 문서에서는  enum 타입으로 정하길 권장한다.

 

 

Default: 별도로 정의하지 않고 NSError을 사용하는 방법

import Foundation

do {
  throw NSError(domain: "my error domain", code: 42, userInfo: ["ui1":12, "ui2":"val2"] ) 
}
catch let error as NSError {
  print("Caught NSError: \(error.localizedDescription), \(error.domain), \(error.code)")
  let uis = error.userInfo 
  print("\tUser info:")
  for (key,value) in uis {
    print("\t\tkey=\(key), value=\(value)")
  }
}

 

 

[출처]

https://docs.swift.org/swift-book/documentation/the-swift-programming-language/errorhandling/