Throwing function- TIL55

future0159 2월 23일 PM 10:23 4 1
future0159 Profile Image Level 9
1

throwing function

throws라는 키워드를 붙이게 되면 에러 전달이 가능한 “throwing function”입니다.
해당 함수는 발생 에러를 호출된 범위로 전파하는 역할을 합니다. throwing function은 에러 전파만 가능하며, throws키워드가 붙지 않은 함수 내부에서 발생한 에러는 반드시 “함수 내부”에서 처리가 되어야합니다.
그렇지 않으면 에러로 인해 프로그램 종료를 발생시킵니다.
에러 전파의 예시를 살펴보겠습니다

enum ErrorTest: Error {
  case minusValue
  case zeroValue
}

func positiveValue(number: Int) throws -> Int {
  if number > 0 {
    return number
  } else if number == 0 {
    throw ErrorTest.zeroValue
  } else {
    throw ErrorTest.minusValue
  }
}

func throw_function_test() throws {
  let positiveNumber = try positiveValue(number: 3)
  print(positiveNumber)
  let zeroNumber = try positiveValue(number: 0)
  print(zeroNumber)
  let negativeNumber = try positiveValue(number: -3)
  print(negativeNumber)
}

func testFunction() {
    do {
        try throw_function_test()
    } catch ErrorTest.minusValue {
        print("minus Value")
    } catch ErrorTest.zeroValue {
        print("zero Value")
    } catch {
        print(error.localizedDescription)
    }
}
댓글