μ•„μ΄ν…œ 72: ν‘œμ€€ μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜λΌ

πŸ’‘
상황에 λΆ€ν•©ν•œλ‹€λ©΄ 항상 ν‘œμ€€ μ˜ˆμ™Έλ₯Ό μž¬μ‚¬μš© ν•˜μž. 이 λ•Œ API λ¬Έμ„œλ₯Ό μ°Έκ³ ν•΄ κ·Έ μ˜ˆμ™Έκ°€ μ–΄λ–€ μƒν™©μ—μ„œ 던져 μ§€λŠ” μ§€ κΌ­ 확인해야 ν•œλ‹€. μ˜ˆμ™Έμ˜ 이름 뿐 μ•„λ‹ˆλΌ μ˜ˆμ™Έκ°€ λ˜μ Έμ§€λŠ” λ§₯락도 λΆ€ν•©ν•  λ•Œλ§Œ μž¬μ‚¬μš©ν•œλ‹€ 더 λ§Žμ€ 정보λ₯Ό μ œκ³΅ν•˜κΈ° μ›ν•˜λ©΄ ν‘œμ€€ μ˜ˆμ™Έλ₯Ό ν™•μž₯해도 μ’‹λ‹€. 단, μ˜ˆμ™ΈλŠ” 직렬화 ν•  수 μžˆλ‹€λŠ” 사싀을 κΈ°μ–΅ν•˜μž. (μ§λ ¬ν™”μ—λŠ” λ§Žμ€ 뢀담이 λ”°λ₯΄λ‹ˆ) 이 μ‚¬μ‹€λ§ŒμœΌλ‘œλ„ λ‚˜λ§Œμ˜ μ˜ˆμ™Έλ₯Ό μƒˆλ‘œ λ§Œλ“€μ§€ μ•Šμ•„μ•Ό ν•  근거둜 μΆ©λΆ„ν•  수 μžˆλ‹€

ν‘œμ€€ μ˜ˆμ™Έ μ‚¬μš©μ‹œ μž₯점

  • μž¬μ‚¬μš© 증가 β†’ μš°λ¦¬κ°€ μž‘μ„±ν•œ APIκ°€ λ‹€λ₯Έ μ‚¬λžŒμ΄ 읡히고 μ‚¬μš©ν•˜κΈ° μ‰¬μ›Œμ§„λ‹€λŠ” 것 (λ§Žμ€ ν”„λ‘œκ·Έλž˜λ¨Έμ—κ²Œ 이미 μ΅μˆ™ν•΄μ§„ κ·œμ•½μ„ κ·ΈλŒ€λ‘œ λ”°λ₯΄κΈ°μ—)
  • 우리 APIλ₯Ό μ‚¬μš©ν•œ ν”„λ‘œκ·Έλž¨λ„ λ‚―μ„  μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ²Œ λ˜μ–΄ 읽기 μ‰½κ²Œ λœλ‹€λŠ” μž₯점도 큼
  • μ˜ˆμ™Έ 클래슀 μˆ˜κ°€ μ μ„μˆ˜λ‘ λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰λ„ 쀄고 클래슀λ₯Ό μ μž¬ν•˜λŠ” μ‹œκ°„λ„ 적게 κ±Έλ¦Ό

자주 μž¬μ‚¬μš©λ˜λŠ” μ˜ˆμ™Έ

μ˜ˆμ™Έ
μ£Όμš” μ“°μž„
IllegalArgumentException
ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” 값이 인수둜 κ±΄λ„€μ‘Œμ„ λ•Œ(null은 λ”°λ‘œ NullPointerException으둜 처리)
IllegalStateException
객체가 λ©”μ„œλ“œλ₯Ό μˆ˜ν–‰ν•˜κΈ°μ— μ μ ˆν•˜μ§€ μ•Šμ€ μƒνƒœμΌ λ•Œ. 예둜 μ œλŒ€λ‘œ μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ 객체λ₯Ό μ‚¬μš©ν•˜λ € ν•  λ•Œ 던질 수 있음
NullPointerException
null을 ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” λ©”μ„œλ“œμ— null을 건넸을 λ•Œ
IndexOutOfBoundException
μΈλ±μŠ€κ°€ λ²”μœ„λ₯Ό λ„˜μ–΄μ„°μ„ λ•Œ
ConcurrentModificationException
ν—ˆμš©ν•˜μ§€ μ•ŠλŠ” λ™μ‹œ μˆ˜μ •μ΄ 발견 됐을 λ•Œ
UnsupportedOperationException
ν˜ΈμΆœν•œ λ©”μ„œλ“œλ₯Ό μ§€μ›ν•˜μ§€ μ•Šμ„ λ•Œ
  • Exception, RuntimeException, Throwable, ErrorλŠ” 직접 μž¬μ‚¬μš©ν•˜μ§€ 말자
  • IllegalArgumentExceptionκ³Ό IllegalStateException 사이에 μ–΄λ–€ μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•  μ§€ ν—·κ°ˆλ¦΄ λ•Œμ˜ κΈ°μ€€
    • 인수 값이 λ¬΄μ—‡μ΄μ—ˆλ“  μ–΄μ°¨ν”Ό μ‹€νŒ¨ν–ˆμ„ 거라면 IllegalStateException
    • κ·Έλ ‡μ§€ μ•ŠμœΌλ©΄ IllegalArgumentException