오류 처리에 대해서 Araboza
Error
라는 프로토콜을 준수하는 타입의 값을 통해 표현한다enum CoffeeMachineError: Error {
case emptyCoffeeCapsule
case notEnoughWater
}
throw
구문을 사용한다throw CoffeeMachineError.emptyCoffeeBeans
함수에서 발생한 오류 알리기
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 "커피"
}
}