-
[작성중] [Swift] 에러처리 error handling► Swift 2023. 6. 28. 20:29반응형
두서없이 써논 글입니다!
/* 에러처리 error handling */ /* 예제) 맥도날드 주문 에러 */ // 에러 타입 정의: Error 프로토콜을 새로운 Error 열거형 타입을 정의한다. enum McDonaldOrderError: Error { case invalidSelection case LackOfMoney case outOfStock } // 에러를 발생시키는 함수 정의: Hamburger 구조체를 생성한다. struct Hamburger { var name: String var price: Int var count: Int } // 내가 가진 돈을 4,000원으로 설정 let myMoney = 4000 // throws 키워드를 이용하여 에러를 발생시키는 함수를 정의하고, // 에러가 발생하면 에러를 던질 곳에 throw를 위치시킨다. func OrderMcDonaldMenu(orderedMeun: Hamburger) throws { if orderedMeun.name != "BigMac" { throw McDonaldOrderError.invalidSelection } if orderedMeun.price > myMoney { throw McDonaldOrderError.LackOfMoney } if orderedMeun.count == 0 { throw McDonaldOrderError.outOfStock } } // 주문하고 싶은 햄버거를 변수로 먼저 만들기. let bigMac = Hamburger(name: "BigMac", price: 4600, count: 3) // Do-Catch를 이용하여 에러 처리하기. // do문 내에서 try 키워드를 통해 던진 오류를 받을 수 있다 // catch문 내에서는 던진 오류를 어떻게 처리할 건지를 정의한다. do { try OrderMcDonaldMenu(orderedMeun: bigMac) } catch McDonaldOrderError.invalidSelection { print("저희 매장에 주문한 메뉴가 없습니다. 메뉴이름을 다시 확인해주세요.") } catch McDonaldOrderError.LackOfMoney { print("메뉴를 주문하기에 고객님의 잔액이 부족합니다.") } catch McDonaldOrderError.outOfStock { print("현재 재고가 없어 주문이 불가능합니다.") } // 내가 가진 돈이 600원 부족해서 아래와 같은 에러가 출력됬다. //result: 메뉴를 주문하기에 고객님의 잔액이 부족합니다. //알면 좋은 키워드 //rethrows //defer // 참고링크: https://velog.io/@un1945/Swift-%EC%97%90%EB%9F%AC%EC%B2%98%EB%A6%AC-Error-Handling
반응형'► Swift' 카테고리의 다른 글
[작성중] [Swift] Optional Unwrapping - 옵셔널 바인딩(if let vs guard let) (0) 2023.06.30 [작성중] [Swift] optional unwrapping, 강제추출(forced upwrapping) (0) 2023.06.28 [작성중] [Swift] non-optional type, optional type, nil (0) 2023.06.28 [작성중] [Swift] type(of:ㅁ), String, Character 정리 (0) 2023.06.28 [작성중] [Swift] for in, forEach 정리 (0) 2023.06.27