애플스위프트(APPLE SWIFT) - 에러처리(Error handling)
스위프트에서 에러 처리는 프로그램 실행 중 발생할 수 있는 예상치 못한 상황을 관리하는 중요한 방법입니다. 이를 통해 예외 상황을 안전하게 처리하고, 프로그램의 정상적인 흐름을 유지할 수 있습니다.
에러 처리의 목적
- 안정성: 예외 상황을 안전하게 처리하여 앱의 갑작스런 종료를 방지합니다.
- 명확성: 에러가 발생한 원인을 명확하게 파악하고, 적절한 대응을 할 수 있습니다.
- 유지 보수성: 에러 처리를 통해 프로그램의 문제점을 더 쉽게 찾아 수정할 수 있습니다.
에러 정의
스위프트에서 에러는 Error 프로토콜을 준수하는 타입으로 표현됩니다. 주로 열거형(enum)을 사용하여 다양한 에러 상태를 정의합니다.
enum VendingMachineError: Error {
case invalidSelection
case insufficientFunds(coinsNeeded: Int)
case outOfStock
}
에러 발생(Throwing)
함수, 메서드, 이니셜라이저에서 에러를 발생시킬 수 있습니다. 이를 위해 throw 키워드를 사용합니다.
struct Item {
var price: Int
var count: Int
}
class VendingMachine {
var inventory = [
"Candy Bar": Item(price: 12, count: 7),
"Chips": Item(price: 10, count: 0)
]
func vend(itemNamed name: String) throws {
guard let item = inventory[name] else {
throw VendingMachineError.invalidSelection
}
guard item.count > 0 else {
throw VendingMachineError.outOfStock
}
guard item.price <= currentCoins else {
throw VendingMachineError.insufficientFunds(coinsNeeded: item.price - currentCoins)
} // 여기에서 아이템을 제공하는 코드가 실행됩니다.
}
}
에러 캐치(Catching)
do-catch 블록을 사용하여 에러를 캐치하고 처리합니다. 에러가 발생할 수 있는 코드를 do 블록 안에 넣고, catch 블록에서 에러를 처리합니다.
var vendingMachine = VendingMachine()
vendingMachine.currentCoins = 8
do {
try vendingMachine.vend(itemNamed: "Candy Bar")
// 캔디 바를 성공적으로 구매
} catch VendingMachineError.invalidSelection {
print("Invalid Selection.")
} catch VendingMachineError.outOfStock {
print("Out of Stock.")
} catch VendingMachineError.insufficientFunds(let coinsNeeded) {
print("Insufficient funds. Please insert an additional \(coinsNeeded) coins.")
} catch {
print("Unexpected error: \(error).")
}
에러 처리를 통해 예외 상황을 안전하게 처리하고, 사용자에게 적절한 피드백을 제공할 수 있습니다. 이는 앱의 안정성과 사용자 경험을 향상시키는 데 매우 중요한 역할을 합니다.
'프로그래밍언어 > 애플스위프트' 카테고리의 다른 글
애플스위프트(APPLE SWIFT) - UIKit을 사용한 앱 개발앱 라이프 사이클iOS 특정 기능 (1) | 2024.01.13 |
---|---|
애플스위프트(APPLE SWIFT) - SwiftUI, UI구성요소, 레이아웃과 네비게이션, 데이터바인 (0) | 2024.01.13 |
애플스위프트(APPLE SWIFT) - 고급 연산자 (0) | 2024.01.13 |
애플스위프트(APPLE SWIFT) - 프로토콜(Protocols)과 익스텐션(Extensions) (2) | 2024.01.13 |
애플스위프트(APPLE SWIFT) - 프로퍼티, 메서드, 상속, 초기화, 래퍼런스 타입과 밸류타입 (2) | 2024.01.13 |