Item 69. Exceptional Conditions
μμΈλ μ§μ§ μμΈ μν©μλ§ μ¬μ©νλΌ
μ μ΄ νλ¦μμμ μμΈ
λ°λ³΅λ¬Έμ μν ν λ μλμ κ°μ΄ μμΈλ₯Ό μ¬μ©ν΄μ 루νλ₯Ό μ’
λ£νλ λ°©λ²λ μ‘΄μ¬ν κ²μ΄λ€.
JVMμ λ°°μ΄μ μ κ·Όν λλ§λ€ κ²½κ³λ₯Ό λμ§ μλμ§ κ²μ¬λ₯Ό νλλ°, 1λ²μμλ μ€λ³΅λ μ μλ λ°°μ΄μ κ²½κ³λ₯Ό λμ§ μλμ§ κ²μ¬νλ λΆλΆ(i < range.length
)μ μ κ±°νλ€.
λλ¬Έμ 1λ² λ°©λ²μ΄ 루νλ₯Ό λ λΉ λ₯΄κ² λ릴 μ μλ€κ³ μκ°ν μ μμ§λ§, μ€μ λ‘λ 2λ²μ λ°©λ²μ΄ λ λΉ λ₯΄λ€.(μ½ 2λ°° μ°¨μ΄)
λν κ±°μ λλΆλΆμ μ¬λλ€μ΄ μ§κ΄μ μ΄μ§ μλ€λ μ΄μ λ‘ 2λ²μ λ°©λ²μ μ νΈν κ²μ΄μ§λ§, κ·Έ μ΄μΈμλ λ§μ μ΄μ κ° μ‘΄μ¬νλ€.
μμΈλ μμΈ μν©μ λͺ©μ μΌλ‘ μ€κ³λμκΈ° λλ¬Έμ, μ΅μ νλμ΄ μμ§ μλ€.(λλ¦° μλ)
try-catch
λΈλ‘μ΄ μκΈ°λ©΄ JVMμ΄ μ μ©ν μ μλ μ΅μ νκ° μ νλλ€.λ°°μ΄μ μννλ νμ€ κ΄μ©κ΅¬μλ μ΄λ―Έ μ΅μ ν μ²λ¦¬ λμ΄ λ°°μ΄ λ²μμ λν μ€λ³΅ κ²μ¬λ₯Ό μννμ§ μλλ€.
μ±λ₯μ μΈ μΈ‘λ©΄ λΏλ§ μλλΌ, μλμ κ°μ μλ리μ€λ‘ μΈν΄ μ λλ‘ λμνμ§ μμ μλ μλ€.
λ°λ³΅λ¬Έ μμ λ²κ·Έκ° μ‘΄μ¬νλ€κ³ κ°μ
νλ¦ μ μ΄μ μ¬μ©λ μμΈκ° ν΄λΉ λ²κ·Έλ₯Ό μ¨κΉ
λ°λ³΅λ¬Έμμ νΈμΆν λ©μλκ° κ΄λ ¨ μλ λ°°μ΄μ μ¬μ© μ€μ
ArrayIndexOutOfBoundsException
μ λμ§νμ€ κ΄μ©κ΅¬λΌλ©΄ μ΄ λ²κ·Έλ μμΈλ₯Ό μ‘μ§ μκ³ μ€λ λκ° μ’ λ£λμ§λ§, μμΈλ₯Ό μ‘μκΈ° λλ¬Έμ μ€λ λλ μ’ λ£λμ§ μκ³ κ³μ μ€νλ¨
μ μν©μ²λΌ νλ¬κ°λ€λ©΄ μλμΉ μμ λμμΌλ‘ μΈν΄ λλ²κΉ μ΄ λ μ΄λ €μμ§κ³ , μ¬κ°ν λ Όλ¦¬μ μ€λ₯κ° λ°μν μ μλ€. λλ¬Έμ μμΈλ μμΈ μν©μμλ§ μ¬μ©ν΄μΌνλ©°, μ μ΄ νλ¦μ©μΌλ‘λ μ¬μ©νμ§ λ§μμΌ νλ€.
μν κ²μ¬λ₯Ό ν΅ν μμΈ μ²λ¦¬ μ΅μν
μμΈλ₯Ό μ¬μ©νμ§ μκ³ , μν κ²μ¬λ₯Ό ν΅ν΄ μμΈ μ²λ¦¬λ₯Ό μ΅μν ν μ μλ€. μ μ€κ³λ APIμμλ, ν΄λΌμ΄μΈνΈκ° μ μμ μΈ μ μ΄ νλ¦μμ μμΈλ₯Ό μ¬μ©ν μΌμ΄ μκ² ν΄μ€λ€.
Iterator
μΈν°νμ΄μ€μ next()
λ©μλλ λ€μ μμκ° μ‘΄μ¬νμ§ μμ λ NoSuchElementException
μ λμ§λλ°,
μ¬μ©νκΈ° μ μ hasNext()
λ©μλλ₯Ό ν΅ν΄ λ€μ μμκ° μ‘΄μ¬νλμ§ νμΈνκ³ μ¬μ©νλ©΄ μμΈλ₯Ό μ¬μ©νμ§ μκ³ λ μν κ²μ¬λ₯Ό ν μ μλ€.
μν κ²μ¬ λ©μλ vs Optional vs νΉμ κ°
μν κ²μ¬ λ©μλ λμ Optional
μ μ¬μ©νκ±°λ null
κ°μ νΉμν κ°μ λ°ννλ λ°©λ²λ μ‘΄μ¬νλλ°,
μ
μ€ μ ννλ λ°©λ²μ μ§μΉ¨μ μλμ κ°λ€.
Optional / νΉμ κ°
μΈλΆ λκΈ°ν μμ΄ μ¬λ¬ μ€λ λκ° λμ μ κ·Όνκ±°λ μΈλΆ μμΈμΌλ‘ λ³νλ κ²½μ°: μν κ²μ¬ λ©μλμ μν μμ‘΄μ λ©μλ νΈμΆ μ¬μ΄μ κ°μ²΄ μνκ° λ³ν μ μκΈ° λλ¬Έμ Optional / νΉμ κ°μ΄ μ ν©νλ€.
μ±λ₯μ΄ μ€μν μν©: μν κ²μ¬ λ©μλλ₯Ό νΈμΆνλ κ²λ³΄λ€ Optional / νΉμ κ°μ μ¬μ©νλ κ²μ΄ λ λΉ λ₯΄λ€.
μν κ²μ¬ λ©μλ
λ€λ₯Έ λͺ¨λ κ²½μ°: κ°λ μ±μ΄ μ΄μ§ λ μ’κ³ , μλͺ» μ¬μ©νμ λ λλ²κΉ μ΄ λ μ½λ€.
Last updated
Was this helpful?