애플스위프트(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).")
}

 

에러 처리를 통해 예외 상황을 안전하게 처리하고, 사용자에게 적절한 피드백을 제공할 수 있습니다. 이는 앱의 안정성과 사용자 경험을 향상시키는 데 매우 중요한 역할을 합니다.

+ Recent posts