μλ¬(μ€λ₯)μ μ’ λ₯
- μ»΄νμΌ μ€λ₯ (λ¬Έλ²μ μλ¬)
- μ½λμ μμ μ ν΅ν΄ ν΄κ²°
- λ°νμ μ€λ₯ (λ€μν μ΄μ λ‘ μ±μ΄ μ€νλλ λμ λ°μ -> μ±μ΄ κΊΌμ§)
- 미리 λ°μκ°λ₯ν μλ¬λ₯Ό νμ , μ¬λ°λ₯΄κ² μ²λ¦¬νλ©΄ μ±μ κΊΌμ§μ λ§μ μ μμ
- μλ¬μ²λ¦¬κ° νμν μ€λ₯
μλ¬μ²λ¦¬κ° νμν μ΄μ ?
μ±μ΄ κ°μκΈ° κΊΌμ§λ νμμ μ μ΄νκΈ° μν΄μμ΄λ€.
μλ¬λ μΌλ°μ μΌλ‘ ν¨μμ μ²λ¦¬ κ³Όμ μμ μΌμ΄λ¨
λ¬Έλ²?
func ν¨μλͺ (νλΌλ―Έν°) throws -> 리ν΄νμ {
}
μλ¬μ²λ¦¬ κ³Όμ
- μλ¬λ₯Ό μ΄κ±°νμΌλ‘ μ μνλ , Error νλ‘ν μ½ μ±νν΄μΌν¨ (μ€μννΈμ μλ¬ νλ‘ν μ½ λ΄μ ν΅ν©λ¨)
enum HeightError: Error {
case maxHeight
case minHeight
}
2. μλ¬κ° λ°μν μ μλ ν¨μλ₯Ό μ μν΄μΌν¨
func checkingHeight(height: Int) throws -> Bool { // (μλ¬λ₯Ό λμμ μλ ν¨μ νμ μ΄λ€)
if height > 190 {
throw HeightError.maxHeight
} else if height < 130 {
throw HeightError.minHeight
} else {
if height >= 160 {
return true
} else {
return false
}
}
}
3. μλ¬κ° λ°μν μ μλ ν¨μ(== throwν€μλλ₯Ό μ¬μ©ν ν¨μ)λ₯Ό μ²λ¦¬ν΄μΌν¨ (ν¨μμ μ€ν)
- tryν€μλ
- λͺ¨λ μλ¬λ°μμ μμΈμ μΈ κ²½μ°λ₯Ό λν μΌνκ² μ²λ¦¬ κ°λ₯
- do-catch
-
- doλΈλ μμ μλ μ½λλ μ μμ μΈ κ²½μ°μ μ²λ¦¬λ₯Ό λ΄λΉ
- tryλ doλΈλ μμ μμ±νλ€.
- catchλΈλ μμ μλ μ½λλ μλ¬μ κ²½μ°μ μ²λ¦¬λ₯Ό λ΄λΉ
- doλΈλμμ λ°μν μλ¬λ§μ μ²λ¦¬
- 1λ¨κ³μμ μ΄κ±°νμΌλ‘ μ μλ λͺ¨λ μλ¬λ₯Ό λ°λμ μ²λ¦¬ν΄μΌν¨ (catch λ€μ μ΄λ ν μ΄κ±°κ°λ μλ€λ©΄ defaultκ°μΌλ‘ μ€μ λ¨ (μλ΅κ°λ₯))
- errorμμλ₯Ό μ 곡ν¨(λͺ¨λ μλ¬κ° λμ΄μ΄)
- errorμμ(μλ¬ νλ‘ν μ½ νμ )λ₯Ό ꡬ체μ μΌλ‘ μ μν νμ μΌλ‘ μΊμ€ν ν΄μ μ€μμΉλ¬Έ λ±μΌλ‘ λ€μ μ²λ¦¬
- doλΈλ μμ μλ μ½λλ μ μμ μΈ κ²½μ°μ μ²λ¦¬λ₯Ό λ΄λΉ
-
do { // doλΈλ - ν¨μλ₯Ό ν΅ν μ μμ μΈ μ²λ¦¬μ κ²½μ° μ€ννλ λΈλ
let isChecked = try checkingHeight(height: 200)
print("λμ΄κΈ°κ΅¬ νλ κ² κ°λ₯: \(isChecked)")
}
catch { // catchλΈλ - ν¨μκ° μλ¬λ₯Ό λμ‘μ κ²½μ°μ μ²λ¦¬ μ€ννλ λΈλ
print("λμ΄κΈ°κ΅¬ νλ κ² λΆκ°λ₯")
}
- try?ν€μλ (Optional try)
- μ΅μ λ νμ μΌλ‘ λ¦¬ν΄ (μ μμ μΈ κ²½μ° : 리ν΄νμ μΌλ‘ 리ν΄, λΉμ μμ μΈ κ²½μ° : nil 리ν΄) (μ΅μ λ νμ μ΄κΈ° λλ¬Έμ unwrapping νμ)
- try!ν€μλ (Forced try)
- μλ¬κ° λ μ μλ κ²½μ°μλ§ μ νμ μΌλ‘ μ¬μ© κ°λ₯(μ μμ μΈ κ²½μ° : 리ν΄νμ μΌλ‘ 리ν΄, λΉμ μμ μΈ κ²½μ° : λ°νμμλ¬)
μλ¬λ₯Ό λμ§λ ν¨μλ₯Ό μ²λ¦¬νλ ν¨μ
- μΌλ°μ μΈ ν¨μλ‘ μλ¬ λ€μ λμ§κΈ°
- ν¨μ λ΄μμ μλ¬λ₯Ό μ§μ μ²λ¦¬νμ§ λͺ»νλ κ²½μ°, μλ¬λ₯Ό λ€μ λμ§ μλ μμ
- catchλΈλμ΄ μμ΄λ μλ¬λ₯Ό λ°μΌλ‘ λμ§ μ μμ
- rethrowing ν¨μλ‘ μλ¬ λ€μ λμ§κΈ° (rethrows ν€μλ)
- μλ¬λ₯Ό λμ§λ throwing ν¨μλ₯Ό νλΌλ―Έν°λ‘ λ°λ κ²½μ° , λ΄λΆμμ λ€μ μλ¬ λμ§κΈ° κ°λ₯ (rethrowsν€μλ νμ)
- λ©μλμ μμ±μλ ν¨μμ΄κΈ° λλ¬Έμ rethrowsν€μλ μ¬μ© κ°λ₯
- μλ¬λ₯Ό λ€μ λμ§ (μ§μ λμ§μ§ λͺ»ν¨)
'swift λ¬Έλ²π€' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[SWIFT] λΉλκΈ° νλ‘κ·Έλλ° (0) | 2023.06.01 |
---|---|
[SWIFT] Defer문 (0) | 2023.05.12 |
[SWIFT] λμ λ리 (Dictionary) (0) | 2023.05.12 |
[SWIFT] λ©λͺ¨λ¦¬ κ΄λ¦¬ (0) | 2023.05.10 |
[SWIFT] μ΅μ λ 체μ΄λ(Optional Chaining) (1) | 2023.05.10 |