→ Success와 Faillure를 사용해 가독성있는 에러처리 가능
enum McDonaldOrderError : Error{
case invalidSelection
case lackOfMoney
case outOfStock
}
struct Hamburger{
var name : String
var price : Int
var count : Int
}
let bigMac = Hamburger(name: "BigMac", price: 4600, count: 3)
let money = 4000
func orderMcDonaldMenu(orderMenu: Hamburger) throws{
if orderMenu.name != "BigMac"{
throw McDonaldOrderError.invalidSelection
}
if orderMenu.price > money{
throw McDonaldOrderError.lackOfMoney
}
if orderMenu.count == 0 {
throw McDonaldOrderError.outOfStock
}
}
do{
try orderMcDonaldMenu(orderMenu: bigMac)
}catch McDonaldOrderError.invalidSelection{
print("잘못된 선택입니다.")
}catch McDonaldOrderError.outOfStock{
print("재고 부족.")
}catch McDonaldOrderError.lackOfMoney{
print("잔액이 부족합니다..")
}
let order = orderMcDonaldMenu(orderedMenu: Hamburger(name: "BigMac", price: 4600, count: 4))
switch order
{
case .success(let data):
print(data)
case .failure(let error):
print(error)
}
→코드의 가독성이 상승한 거같다.