상세 컨텐츠

λ³Έλ¬Έ 제λͺ©

[ Swift ] Error Handling

🍎 iOS/Swift

by AHN.Jihyeon 2024. 11. 5. 23:39

λ³Έλ¬Έ

 

 

 

Swiftμ—μ„œ 였λ₯˜ μ²˜λ¦¬ν•˜λŠ” 방법은

1. μ˜΅μ…”λ„ 

: 잘λͺ»λœ 처리의 κ²°κ³Όλ‚˜ μ‹€ν–‰ 도쀑 μ‹€νŒ¨ν–ˆμ„ λ•Œ 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚€λŠ” λŒ€μ‹  nil을 λ°˜ν™˜.

 

2. μ—λŸ¬μ²˜λ¦¬ ꡬ문

: λ°˜ν™˜κ°’ νƒ€μž…μ΄λ‚˜ μ½”λ“œμ˜ 흐름과 상관 없이 였λ₯˜λ₯Ό 던질 수 μžˆλŠ” ꡬ문. 

 

 

μ—λŸ¬μ²˜λ¦¬(Error Handlig)λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ—λŸ¬ μ‘°κ±΄μ—μ„œ μ‘λ‹΅ν•˜κ³  λ³΅κ΅¬ν•˜λŠ” ν”„λ‘œμ„ΈμŠ€μ΄λ‹€. 

일뢀 μž‘μ—…μ€ 항상 μ‹€ν–‰ μ™„λ£Œν•œλ‹€λŠ” 보μž₯이 λ˜μ§€ μ•ŠλŠ”λ‹€.

μ˜΅μ…”λ„μ„ 값이 μ—†μŒμ„ λ‚˜νƒ€λ‚΄λŠ”λ° μ‚¬μš©λ˜λŠ”λ° μ‚¬μš©λ˜μ§€λ§Œ μž‘μ—…μ΄ μ‹€νŒ¨ν•  경우 μ—λŸ¬ 원인을 이해할 수 μžˆλ‹€. 

 

 

 

πŸ”Ž  1 . μ—λŸ¬ ν‘œν˜„κ³Ό λ˜μ§€κΈ°(Representing and Throwing Errors) 


Swiftμ—μ„œ μ—λŸ¬λŠ” Error ν”„λ‘œν† μ½œμ— μ€€μˆ˜ν•˜λŠ” νƒ€μž…μ˜ κ°’μœΌλ‘œ ν‘œν˜„λœλ‹€.

이 ν”„λ‘œν† μ½œμ€ λΉ„μ–΄μžˆμœΌλ©° μ—λŸ¬λ₯Ό μ²˜λ¦¬ν•˜ 것에 λŒ€ν•΄ μ‚¬μš©λ  수 μžˆλ‹€. 

 

 

μ—΄κ±°ν˜•μ€ κ΄€λ ¨λœ μ—λŸ¬ 쑰건의 그룹을 λͺ¨λΈλ§ν•˜λŠ”데 μ ν•©ν•˜μ—¬ κ΄€λ ¨λœ 값을 μ‚¬μš©ν•˜μ—¬ μ—λŸ¬μ˜ νŠΉμ„±μ— λŒ€ν•œ μΆ”κ°€ 정보λ₯Ό 전달할 수 μžˆλ‹€. 

Error ν”„λ‘œν† μ½œμ„ μ±„νƒν•œ μ—΄κ±°ν˜•μ„ μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ 였λ₯˜ 상황을 μ •μ˜ν•˜κ³  이λ₯Ό ν™œμš©ν•΄ μ—λŸ¬λ₯Ό 관리할 수 μžˆλ‹€.

 

1. μ—λŸ¬ μ •μ˜ν•˜κΈ°

enum VendingMachineError: Error {
    case invalidSelecion //μžνŒκΈ°μ— μ—†λŠ” μƒν’ˆ 선택 μ‹œ λ°œμƒν•˜λŠ” 였λ₯˜
    case insufficientFunds(coinsNeeded: Int) //μ„ νƒν•œ ν•­λͺ©λ³΄λ‹€ κΈˆμ•‘μ΄ λΆ€μ‘±ν•  μ‹œ λ°œμƒν•˜λŠ” 였λ₯˜. coinsNeededλΌλŠ” μ—°κ΄€ 값을 톡해 λΆ€μ‘±ν•œ κΈˆμ•‘μ„ ν•¨κ»˜ 전달할 수 있음.
    case outOfStock //μ„ νƒν•œ μƒν’ˆμ˜ μž¬κ³ κ°€ 없을 μ‹œ λ°œμƒν•˜λŠ” 였λ₯˜
}

 

μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ μ˜ˆμƒμΉ˜ λͺ»ν•œ 일이 λ°œμƒν•˜μ—¬ 정상적인 흐름을 계속할 수 μ—†μŒμ„ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€. 

 

 

throw ꡬ문을 μ‚¬μš©ν•΄ μ—λŸ¬λ₯Ό λ°œμƒ μ‹œν‚€κΈ°

μ•„λž˜μ˜ μ½”λ“œλŠ” μžνŒκΈ°μ— 5개의 코인이 더 ν•„μš”ν•˜λ‹€κ³  μ—λŸ¬ λ°œμƒμ‹œν‚€λŠ” ꡬ문

throw VendingMachineError.insufficientFunds(coinsNeeded: 5)

 

 

 

 

 

 

 

 

 

 

 

πŸ”Ž  2. ν‚€μ›Œλ“œ


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

πŸ”— Reference 

https://bbiguduk.gitbook.io/swift/language-guide-1/error-handling

 

κ΄€λ ¨κΈ€ 더보기