κ²μ¬ μμΈλ₯Ό μ«μ΄νλ μλ° νλ‘κ·Έλλ¨Έκ° λ§μ§λ§, μ λλ‘ νμ©νλ©΄ APIμ νλ‘κ·Έλ¨μ μ§μ λμΌ μ μλ€. κ²μ¬ μμΈλ νλ‘κ·Έλλ¨Έκ° λ¬Έμ λ₯Ό μ§μ μ²λ¦¬νμ¬ μμ μ±μ λμΈλ€. νμ§λ§ κ³Όλν μ¬μ©μ λΆνΈν APIλ₯Ό λ§λ€μ΄λ΄λ―λ‘, νμμ λ°λΌ μ μ νκ² μ¬μ©ν΄μΌ νλ€.
- κ²μ¬ μμΈλ λ©μλμμ λ°μν μ μλ μμΈλ₯Ό λͺ μνκ³ , νΈμΆνλ μ½λμμ μ΄λ₯Ό μ²λ¦¬νλλ‘ κ°μ νλ€. μ΄λ‘ μΈν΄ νλ‘κ·Έλ¨μ μμ μ±μ΄ λμμ§λ€.
- λ°λ©΄μ, κ²μ¬ μμΈλ API μ¬μ©μμκ² λΆλ΄μ μ€ μ μλ€. μμΈλ₯Ό μ²λ¦¬νκΈ° μν΄ catch λΈλ‘μ μΆκ°ν΄μΌ νλ©°, μ€νΈλ¦Ό APIμ κ°μ κΈ°λ₯κ³Ό κ²°ν©νκΈ° μ΄λ €μ΄ κ²½μ°λ μλ€.
κ²μ¬ μμΈμ λΉκ²μ¬ μμΈ μ€ μ΄λ κ²μ μ νν μ§λ νλ‘κ·Έλλ¨Έκ° κ·Έ μμΈλ₯Ό μ΄λ»κ² λ€λ£°μ§ μκ°ν΄λ³΄λ©΄ μ μ μλ€.
try {
obj.action(args);
} catch (TheCheckedException e) {
// μμΈ μν©μ λμ²νλ€.
}μ΄λ¬ν λ°©μμΌλ‘ κ²μ¬ μμΈλ₯Ό μ²λ¦¬ν΄μΌ νλ©°, μ΄λ API μ¬μ©μμκ² λΆλ΄μ μ€ μ μλ€.
- κ²μ¬ μμΈλ₯Ό ννΌνλ κ°μ₯ μ¬μ΄ λ°©λ²μ μ μ ν κ²°κ³Ό νμ μ λ΄μ μ΅μ λμ λ°ννλ κ²μ΄λ€.
- κ²μ¬ μμΈ λμ λΉ μ΅μ λμ λ°ννλ©΄, μμΈ λ°μ μ λΆκ° μ 보λ₯Ό μ 곡νκΈ° μ΄λ ΅μ§λ§, μμΈ μ²λ¦¬μ λΆλ΄μ μ€μΌ μ μλ€.
λ¨μ : μ΅μ λμ μμΈ λ°μ μ΄μ μ λν λΆκ° μ 보λ₯Ό μ 곡ν μ μλ€. λ°λ©΄ μμΈλ₯Ό μ¬μ©νλ©΄ ꡬ체μ μΈ μμΈ νμ κ³Ό κ·Έ νμ μ΄ μ 곡νλ λ©μλλ₯Ό ν΅ν΄ λΆκ° μ 보λ₯Ό μ λ¬ν μ μλ€.
μ΅μ λμ κ΅³μ΄ μ¬μ©ν΄μΌ νλ μ΄μ
- μ½λ κ°λ μ± ν₯μ: μ΅μ λμ μ¬μ©νλ©΄ μμΈ μ²λ¦¬ μ½λμ μ€λ³΅μ μ€μ΄κ³ κ°λ μ±μ λμΌ μ μλ€. μμΈλ₯Ό λμ§λ λμ λΉ μ΅μ λμ λ°ννλ©΄ μ½λμ νλ¦μ΄ κΉλν΄μ§λ€.
- λΆνμν μμΈ λ°©μ§: μ΅μ λμ μ¬μ©ν¨μΌλ‘μ¨, μμΈμ μΈ μν©μ΄ μλ κ²½μ°μλ λΆνμνκ² μμΈλ₯Ό λμ§λ κ²μ λ°©μ§ν μ μλ€. μμΈλ μ€μ λ‘ νλ‘κ·Έλ¨μ νλ¦μ λ°©ν΄νλ―λ‘, μμΈμ μΈ μν©μ΄ μλ κ²½μ°μλ μ΅μ λμ μ¬μ©νλ κ²μ΄ λ μ μ νλ€.
- μ€νΈλ¦Ό APIμμ νΈνμ±: μλ° 8λΆν°λ μ€νΈλ¦Ό APIκ° λ리 μ¬μ©λλ©°, μ΅μ λμ μ¬μ©νλ©΄ μ€νΈλ¦Όμμ μ²λ¦¬νκΈ°κ° ν¨μ¬ μμνλ€. κ²μ¬ μμΈλ μ€νΈλ¦Όκ³Ό μ νΈνλμ§ μκΈ° λλ¬Έμ μ΅μ λμ μ¬μ©νμ¬ λ μ§κ΄μ μ΄κ³ ν¨μ¨μ μΈ μ²λ¦¬κ° κ°λ₯νλ€
- κ²μ¬ μμΈλ₯Ό λμ§λ λ©μλλ₯Ό λ κ°λ‘ μͺΌκ°μ΄ λΉκ²μ¬ μμΈλ‘ λ°κΏ μ μλ€.
- 첫 λ²μ§Έ λ©μλλ μν κ²μ¬ λ©μλλ‘ μμΈ λ°μ κ°λ₯ μ¬λΆλ₯Ό boolean κ°μΌλ‘ λ°ννλ€.
- λ λ²μ§Έ λ©μλλ μ€μ μμ μ μννλ λ©μλμ΄λ€.
- μ΄λ κ² λ¦¬ν©ν°λ§νλ©΄ APIκ° λ μ μ°ν΄μ§μ§λ§, λͺ¨λ μν©μμ μ μ©ν μ μλ κ²μ μλλ€. νΉν μΈλΆ λκΈ°ν μμ΄ μ¬λ¬ μ€λ λκ° λμμ μ κ·Όν μ μλ κ²½μ°μλ μ μ νμ§ μλ€.
리ν©ν°λ§ μ (κ²μ¬ μμΈ μ¬μ©)
try {
obj.action(args);
} catch (TheCheckedException e) {
// μμΈ μν©μ λμ²νλ€.
}리ν©ν°λ§ ν (μν κ²μ¬ λ©μλμ λΉκ²μ¬ μμΈ μ¬μ©)
if (obj.actionPermitted(args)) {
obj.action(args);
} else {
// μμΈ μν©μ λμ²νλ€.
}μ΄ λ¦¬ν©ν°λ§μ λͺ¨λ μν©μ μ μ©ν μ μλ κ²μ μλλ€. μΈλΆ λκΈ°ν μμ΄ μ¬λ¬ μ€λ λκ° λμμ μ κ·Όνκ±°λ μΈλΆ μμΈμ μν΄ μνκ° λ³ν μ μλ κ²½μ°μλ μ΄ λ¦¬ν©ν°λ§μ΄ μ μ νμ§ μλ€.
- κ²μ¬ μμΈλ νλ‘κ·Έλ¨μ μμ μ±μ λμ¬μ£Όλ μ₯μ μ΄ μμ§λ§, λ¨μ©νλ©΄ μ¬μ©νκΈ° λΆνΈν APIλ₯Ό λ§λ€ μ μλ€.
- API νΈμΆμκ° μμΈ μν©μμ 볡ꡬν λ°©λ²μ΄ μλ€λ©΄ λΉκ²μ¬ μμΈλ₯Ό λμ§λ κ²μ΄ μ’λ€.
- λ³΅κ΅¬κ° κ°λ₯νκ³ νΈμΆμκ° κ·Έ μ²λ¦¬λ₯Ό ν΄μ£ΌκΈΈ λ°λλ€λ©΄, μ°μ μ΅μ λμ λ°νν μ μλμ§ κ³ λ―Όν΄μΌ νλ€.
- μ΅μ λλ§μΌλ‘ μΆ©λΆν μ 보λ₯Ό μ 곡ν μ μμ λλ§ κ²μ¬ μμΈλ₯Ό λμ ΈμΌ νλ€.
- κ²μ¬ μμΈλ κΌ νμν κ³³μλ§ μ¬μ©ν΄μΌ νλ€. κ·Έλ μ§ μμΌλ©΄ μ¬μ©μκ° λΆλ΄μ λλΌκ³ API μ¬μ©μ±μ μ νμν¬ μ μλ€.
- API νΈμΆμκ° μμΈ μν©μμ 볡ꡬν λ°©λ²μ΄ μλ€λ©΄ λΉκ²μ¬ μμΈλ₯Ό μ¬μ©ν΄μΌ νλ€.
- λ³΅κ΅¬κ° κ°λ₯νλ€λ©΄ μ΅μ λμ λ¨Όμ κ³ λ €νκ³ , μ΅μ λλ§μΌλ‘λ μΆ©λΆνμ§ μμ λ κ²μ¬ μμΈλ₯Ό λμ§λλ‘ νλ€.
μ¬λ°λ₯Έ μμΈ μ²λ¦¬λ νλ‘κ·Έλ¨μ μμ μ±κ³Ό μ μ°μ±μ λͺ¨λ ν₯μμν€λ μ€μν μμμ΄λ€.