item 74 SeungminLee - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
Effective Java 3e item 74 λ©μλκ° λμ§λ λͺ¨λ μμΈλ₯Ό λ¬ΈμννλΌλ₯Ό μμ½ν λ΄μ©μ λλ€.
λ©μλκ° λμ§λ μμΈ
λ κ·Έ λ©μλλ₯Ό μ¬λ°λ‘ μ¬μ©νλ λ° μμ£Ό μ€μν μ 보λ€. λ°λΌμ μμΈ νλνλλ₯Ό λ¬Έμνλ₯Ό νλλ° μΆ©λΆν μκ°μ μμμΌ νλ€.
κ²μ¬ μμΈλ νμ λ°λ‘λ°λ‘ μ μΈνκ³ , κ° μμΈκ° λ°μνλ μν©μ μλ°λ μ @throws νκ·Έλ₯Ό μ¬μ©νμ¬ μ νν λ¬Έμν νμ.
κ³΅ν΅ μμ ν΄λμ€ νλλ‘ λλ±κ·Έλ € μ μΈνλ μΌμ μΌκ°μ.
κ·Ήλ¨μ μΈ μλ‘ λ©μλκ° μ΅μμ μμΈμΈ Exceptionκ³Ό Throwableμ λμ§λ€κ³ ν΄μλ μλλ€.
main λ©μλλ JVMλ§μ΄ νΈμΆνκΈ° λλ¬Έμ μμΈμ΄λ€.
- λΉκ²μ¬ μμΈλ μΌλ°μ μΌλ‘ νλ‘κ·Έλλ° μ€λ₯λ₯Ό λ»νλλ°, μμ μ΄ μΌμΌν¬ μ μλ μ€μ λ€μ΄ 무μμΈμ§ μλ €μ£Όλ©΄ νλ‘κ·Έλλ¨Έλ μμ°μ€λ½κ² μ€λ₯κ° λμ§ μλ μͺ½μΌλ‘ μ½λ©μ νκ² λλ€.
- public λ©μλλΌλ©΄ νμν μ μ 쑰건μ λ¬Έμν ν΄μΌνλ©° κ·Έ μλ¨μΌλ‘ κ°μ₯ μ’μ κ²μ΄ λ°λ‘ λΉκ²μ¬ μμΈλ€μ λ¬Έμννλ κ²μ΄λ€.
- λ°μ κ°λ₯ν λΉκ²μ¬ μμΈλ₯Ό λ¬Έμλ‘ λ¨κΈ°λ μΌμ μΈν°νμ΄μ€ λ©μλμμ νΉν μ€μνλ€.
μ΄ μ‘°κ±΄μ΄ μΈν°νμ΄μ€μ μΌλ° κ·μ½μ μνκ² λμ΄ κ·Έ μΈν°νμ΄μ€λ₯Ό ꡬνν λͺ¨λ ꡬνμ²΄κ° μΌκ΄λκ² λμνλλ‘ ν΄μ£ΌκΈ° λλ¬Έμ΄λ€.
λ©μλκ° λμ§ μ μλ μμΈλ₯Ό κ°κ° @throws νκ·Έλ‘ λ¬Έμννλ, λΉκ²μ¬ μμΈλ λ©μλ μ μΈμ throws λͺ©λ‘μ λ£μ§ λ§μ
κ²μ¬λ λΉκ²μ¬λμ λ°λΌ API μ¬μ©μκ° ν΄μΌ ν μΌμ΄ λ¬λΌμ§λ―λ‘ μ΄ λμ νμ€ν ꡬλΆν΄μ£Όλκ² μ’λ€.
μλ°λ μ νΈλ¦¬ν°λ λ©μλ μ μΈμ throwsμ μ λ±μ₯νκ³ λ©μλ μ£Όμμ @throws νκ·Έμλ λͺ μν μμΈμ @throwsνκ·Έμλ§ λͺ μν μμΈλ₯Ό μκ°μ μΌλ‘ ꡬλΆν΄μ€λ€. >?
/**
*
* @return secondField
* @throws NullPointerException if parameter is null or empty λΉκ²μ¬μμΈ
* @throws IllegalAccessError if someone access κ²μ¬μμΈ
*/
public int getSecondField() throws IllegalAccessError {
return secondField;
}
λΉκ²μ¬ μμΈλ λͺ¨λ λ¬ΈμννλΌκ³ λ νμ§λ§ νμ€μ μΌλ‘ λΆκ°λ₯ν λλ μλ€.
ν΄λμ€λ₯Ό μμ νλ©΄μ μλ‘μ΄ λΉκ²μ¬ μμΈλ₯Ό λμ§κ² λμ΄λ μμ€ νΈνμ±κ³Ό λ°μ΄λ리 νΈνμ±μ΄ κ·Έλλ‘ μ μ§λλ€λκ² ν° μ΄μ λ€.
μΈλΆ ν΄λμ€λ₯Ό μ¬μ©ν κ²½μ°, λΉκ²μ¬ μμΈλ₯Ό λͺ¨λ λ¬Έμν νλ€ ν΄λ μΈλΆ ν΄λμ€κ° μλ‘μ΄ λΉκ²μ¬ μμΈλ₯Ό λμ§κ² μμ λλ€λ©΄ μ무 μμ λ νμ§ μμ μ°λ¦¬ λ©μλλ λ¬Έμμ μΈκΈλμ§ μμ μλ‘μ΄ λΉκ²μ¬ μμΈλ₯Ό μ ννκ² λλ€.
ν ν΄λμ€μ μ μλ λ§μ λ©μλκ° κ°μ μ΄μ λ‘ κ°μ μμΈλ₯Ό λμ§λ€λ©΄ κ·Έ μμΈλ₯Ό (κ°κ°μ λ©μλκ° μλ) ν΄λμ€ μ€λͺ μ μΆκ°νλ λ°©λ²λ μλ€
μλ₯Ό λ€μ΄ λ§μ λ©μλκ° NullPointerException μ λμ§λ€λ©΄ ν΄λμ€ μλ¨ μ£Όμμ 'μ΄ ν΄λμ€μ λͺ¨λ λ©μλλ μΈμλ‘ nullμ΄ λμ΄μ€λ©΄ NullPointerException μ λμ§λ€' λΌκ³ μ°λ μμ΄λ€.
λ©μλκ° λμ§ κ°λ₯μ±μ΄ μλ λͺ¨λ μμΈλ₯Ό λ¬ΈμννλΌ. μ΄λ κ²μ¬μμΈ, λΉκ²μ¬μμΈ μΆμλ©μλ, ꡬ체λ©μλ λͺ¨λ λ§μ°¬κ°μ§μ΄λ€. μλ°λ μ @throws νκ·Έλ₯Ό μ΄μ©νμ. κ²μ¬ μμΈλ§ λ©μλμ throws λ¬Έμ μΌμΌν μ μΈνκ³ λΉκ²μ¬μκ΄΄λ λ©μλμ μ§μ κΈ°μ νμ§ λ§μ. μμΈλ₯Ό λ¬Έμλ‘ λ¨κΈ°μ§ μμΌλ©΄ λ€λ₯Έ μ¬λμ΄ κ·Έ ν΄λμ€λ μΈν°νμ΄μ€λ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©νκΈ° μ΄λ ΅κ±°λ μ¬μ§μ΄ λΆκ°λ₯ν μλ μλ€.