Swift

Swift try-catch

2021. 11. 28. 20:40
λͺ©μ°¨
  1. πŸ“Œ λͺ©λ‘
  2. πŸ“Œ μ—λŸ¬ μ²˜λ¦¬λž€?
  3. πŸ“Œ Example
  4. πŸ“Œ ν•¨μˆ˜ μ•ˆμ—μ„œ 처리
  5. πŸ“Œ do, catch
  6. πŸ“Œ κ°’ 전달 λ°›κΈ°
λ°˜μ‘ν˜•

πŸ“Œ λͺ©λ‘

  • μ—λŸ¬ μ²˜λ¦¬λž€?
  • Example
  • ν•¨μˆ˜ μ•ˆμ—μ„œ 처리
  • do try catch
  • κ°’ 전달 λ°›κΈ°

πŸ“Œ μ—λŸ¬ μ²˜λ¦¬λž€?

ν”„λ‘œκ·Έλž¨ λ‚΄μ—μ„œ μ—λŸ¬κ°€ λ°œμƒν•œ 상황에 λŒ€ν•΄ λŒ€μ‘ν•˜κ³  이λ₯Ό λ³΅κ΅¬ν•˜λŠ” κ³Όμ •

πŸ“Œ Example

μ—λŸ¬λ₯Ό λ°œμƒ μ‹œν‚€λ €λ©΄ μ΄λ ‡κ²Œ ν•΄μ£Όλ©΄ λ©λ‹ˆλ‹€.

enum PhoneError: Error {
  case unknown
  case batteryLow(batteryLevel: Int)
}

throw PhoneError.batteryLow(batteryLevel: 20) // Error!

πŸ“Œ ν•¨μˆ˜ μ•ˆμ—μ„œ 처리

// throws λ’€μ—λŠ” 리턴 νƒ€μž…
func checkPhoneBatteryStatus(batteryLevel: Int) throws -> String {
  guard batteryLevel != -1 else { throw PhoneError.unknown }
  guard batteryLevel >= 20 else { throw PhoneError.batteryLow(batteryLevel: 20) }
  return "배터리 μƒνƒœκ°€ 정상 μž…λ‹ˆλ‹€."
}

πŸ“Œ do, catch

func checkPhoneBatteryStatus(batteryLevel: Int) throws -> String {
  guard batteryLevel != -1 else { throw PhoneError.unknown }
  guard batteryLevel >= 20 else { throw PhoneError.batteryLow(batteryLevel: batteryLevel) }
  return "배터리 μƒνƒœκ°€ 정상 μž…λ‹ˆλ‹€."
}

do {
  try checkPhoneBatteryStatus(batteryLevel: 10) // μ—λŸ¬κ°€ λ°œμƒν• μˆ˜ μžˆλŠ” ꡬ간에 try λ₯Ό 적어쀀닀
} catch PhoneError.unknown {
  print("μ•Œμˆ˜ μ—†λŠ” μ—λŸ¬ μž…λ‹ˆλ‹€.")
} catch PhoneError.batteryLow(let batteryLevel) {
  print("배터리 전원 λΆ€μ‘± 남은 베터리 : \(batteryLevel)%")
} catch {
  print("κ·Έμ™Έ 였λ₯˜ λ°œμƒ : \(error)") // μ§€μ—­ λ³€μˆ˜λ‘œ error κ°€ λ‚˜μ˜€κ²Œ λœλ‹€.
}

πŸ“Œ κ°’ 전달 λ°›κΈ°

μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ nill 을 λ°›κΈ° λ©λ‹ˆλ‹€.

let status = try? checkPhoneBatteryStatus(batteryLevel: -1)
status // nil
λ°˜μ‘ν˜•

'Swift' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Swift κ³ μ°¨ν•¨μˆ˜(map, filter, reduce)  (0) 2021.11.28
Swift closure  (0) 2021.11.28
Swift μ˜΅μ…”λ„ 체이닝  (0) 2021.11.28
Swift μ—΄κ±°ν˜•  (0) 2021.11.28
Swift μ΅μŠ€ν…μ…˜  (0) 2021.11.28
  1. πŸ“Œ λͺ©λ‘
  2. πŸ“Œ μ—λŸ¬ μ²˜λ¦¬λž€?
  3. πŸ“Œ Example
  4. πŸ“Œ ν•¨μˆ˜ μ•ˆμ—μ„œ 처리
  5. πŸ“Œ do, catch
  6. πŸ“Œ κ°’ 전달 λ°›κΈ°
'Swift' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • Swift κ³ μ°¨ν•¨μˆ˜(map, filter, reduce)
  • Swift closure
  • Swift μ˜΅μ…”λ„ 체이닝
  • Swift μ—΄κ±°ν˜•
eddie0329
eddie0329
Front-end Developer
λ°˜μ‘ν˜•
eddie0329
Eddie Sunny's Blog
eddie0329
전체
였늘
μ–΄μ œ
  • λΆ„λ₯˜ 전체보기 (100)
    • Summary of Book (0)
    • Vue Study (11)
    • Vue TDD (9)
    • Vue BDD (5)
    • Design Pattern (9)
    • Javascript Study (3)
    • React Study (15)
    • React TDD (1)
    • Vue Storybook (2)
    • Refactoring (0)
    • Graphql_Apollo (3)
    • Svelte (8)
    • Open Source (1)
    • D3 (4)
    • Typescript (1)
    • CSS (2)
    • Android (0)
    • Java (0)
    • Kotlin (0)
    • μž‘λ‹΄ (0)
    • Swift (19)
    • Rust (2)
    • νšŒμ‚¬μ΄μ•ΌκΈ° (2)
    • ReactNative Study (2)
    • Vitest (0)

λΈ”λ‘œκ·Έ 메뉴

  • Home

곡지사항

인기 κΈ€

νƒœκ·Έ

  • react-component-slot
  • BDD
  • TDD
  • Javascript
  • swift
  • vue tdd
  • slot νŒ¨ν„΄
  • React Native
  • Vue
  • vue3
  • svelte
  • Cypress
  • TypeScript
  • client only
  • vue storybook
  • storybook6
  • Kotlin
  • react useRef
  • Nextjs
  • jest
  • Vue test
  • D3
  • swift5
  • vue cypress
  • javascript pattern
  • vue bdd
  • Design Pattern
  • CSS
  • apollo
  • react

졜근 λŒ“κΈ€

졜근 κΈ€

hELLO Β· Designed By μ •μƒμš°.
eddie0329
Swift try-catch
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”

단좕킀

λ‚΄ λΈ”λ‘œκ·Έ

λ‚΄ λΈ”λ‘œκ·Έ - κ΄€λ¦¬μž ν™ˆ μ „ν™˜
Q
Q
μƒˆ κΈ€ μ“°κΈ°
W
W

λΈ”λ‘œκ·Έ κ²Œμ‹œκΈ€

κΈ€ μˆ˜μ • (κΆŒν•œ μžˆλŠ” 경우)
E
E
λŒ“κΈ€ μ˜μ—­μœΌλ‘œ 이동
C
C

λͺ¨λ“  μ˜μ—­

이 νŽ˜μ΄μ§€μ˜ URL 볡사
S
S
맨 μœ„λ‘œ 이동
T
T
ν‹°μŠ€ν† λ¦¬ ν™ˆ 이동
H
H
단좕킀 μ•ˆλ‚΄
Shift + /
⇧ + /

* λ‹¨μΆ•ν‚€λŠ” ν•œκΈ€/영문 λŒ€μ†Œλ¬Έμžλ‘œ 이용 κ°€λŠ₯ν•˜λ©°, ν‹°μŠ€ν† λ¦¬ κΈ°λ³Έ λ„λ©”μΈμ—μ„œλ§Œ λ™μž‘ν•©λ‹ˆλ‹€.