[Swift] 오류 처리

Jade·2023년 7월 31일
0

TIL

목록 보기
5/10

오류 처리에 대해서 Araboza


  • 스위프트의 오류(Error)는 Error라는 프로토콜을 준수하는 타입의 값을 통해 표현한다
  • 오류의 표현은 주로 열거형을 사용한다
enum CoffeeMachineError: Error {
    case emptyCoffeeCapsule
    case notEnoughWater
}
  • 오류를 던져줄 때는 throw 구문을 사용한다
    throw CoffeeMachineError.emptyCoffeeBeans
  • 오류가 던져지는 것에 대비하여 던져진 오류를 처리하기 위한 코드 작성도 필요하다
    1. 함수에서 발생한 오류 알리기

      • try 키워드로 던져진 오류를 받는 것이 가능하다
      // 호출했을 때, 동작 도중 오류가 발생하면 자신을 호출한 코드에 오류를 던져서 오류를 알림
      func canThrowError() throws -> String
      • throws는 함수나 메서드의 자체 타입에도 영향을 미친다
        • 즉, throws 함수나 메서드는 같은 이름의 throws가 명시되지 않는 함수나 메서드와 구분된다
enum CoffeeMachineError: Error {
    case emptyCoffeeCapsule
    case emptyWater
}

class CoffeeMachine {
    private var coffeeCapsule: Int = 10
    private var waterLiters: Double = 2.0
    
    var notEnoughCoffeeCapsule: Bool {
        return coffeeCapsule < 1
    }
    
    var notEnoughWater: Bool {
        return waterLiters < 0.2
    }
    
    func makeCoffee() throws -> String {
        guard notEnoughCoffeeCapsule == false else {
            throw CoffeeMachineError.emptyCoffeeCapsule
        }
        
        guard notEnoughWater == false else {
            throw CoffeeMachineError.emptyWater
        }
        
        coffeeCapsule -= 1
        waterLiters -= 0.2
        
        return "커피"
    }
}
  • 코드 동작 중 발생한 오류는 자신을 호출한 코드로 던져서 알릴 수 있지만, 오류를 받은 코드가 적절히 오류를 처리해주지 않는다면 이후의 코드는 작동하지 않는다
profile
응애 iOS 개발자

0개의 댓글