Item 70. Checked Exception & RuntimeException

볡ꡬ할 수 μžˆλŠ” μƒν™©μ—λŠ” 검사 μ˜ˆμ™Έλ₯Ό, ν”„λ‘œκ·Έλž˜λ° 였λ₯˜μ—λŠ” λŸ°νƒ€μž„ μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜λΌ.

μžλ°”λŠ” 문제 상황을 μ•Œλ¦¬λŠ” νƒ€μž…μœΌλ‘œ 검사 μ˜ˆμ™Έ(checked exception)와 비검사 throwable인 λŸ°νƒ€μž„ μ˜ˆμ™Έ(runtime exception), μ—λŸ¬(error)λ₯Ό μ œκ³΅ν•œλ‹€. μ–Έμ œ 무엇을 μ‚¬μš©ν•΄μ•Όν•˜λŠ”μ§€λŠ” μ™„μ „νžˆ λ”°λΌμ•Όν•˜λŠ” 것은 μ•„λ‹ˆμ§€λ§Œ μ–΄λŠμ •λ„ 따라야 ν•˜λŠ” 지침듀이 μ‘΄μž¬ν•œλ‹€.

  • ν˜ΈμΆœν•˜λŠ” μͺ½μ—μ„œ 볡ꡬ할 수 μžˆλŠ” 상황: 검사 μ˜ˆμ™Έ μ‚¬μš©

  • ν”„λ‘œκ·Έλž˜λ° 였λ₯˜ λ°œμƒ: λŸ°νƒ€μž„ μ˜ˆμ™Έ μ‚¬μš©

  • 더 이상 ν”„λ‘œκ·Έλž¨μ„ μˆ˜ν–‰ν•  수 μ—†λŠ” 상황: μ—λŸ¬ μ‚¬μš©

Checked Exception

검사 μ˜ˆμ™ΈλŠ” λ°œμƒν•˜λ©΄ κ·Έ μ˜ˆμ™Έλ₯Ό catch둜 μž‘μ•„ μ²˜λ¦¬ν•˜κ±°λ‚˜ throws둜 던져 ν˜ΈμΆœν•˜λŠ” μͺ½μ—μ„œ μ²˜λ¦¬ν•˜λ„λ‘ κ°•μ œν•  수 μžˆλ‹€. 검사 μ˜ˆμ™Έλ₯Ό 던져 ν˜ΈμΆœν•˜λŠ” μͺ½μ—μ„œ μ²˜λ¦¬ν•˜λ„λ‘ κ°•μ œν•˜λŠ” 방법을 μ„ νƒν•˜λ©΄ ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜λŠ” μͺ½μ— λ¬Έμ œκ°€ λ°œμƒν•  수 μžˆμŒμ„ λͺ…ν™•ν•˜κ²Œ μ•Œλ €μ€„ 수 μžˆλ‹€.

RuntimeException

ν”„λ‘œκ·Έλž˜λ° 였λ₯˜λ₯Ό λ‚˜νƒ€λ‚Ό λ•ŒλŠ” 보톡 λŸ°νƒ€μž„ μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•œλ‹€. λŸ°νƒ€μž„ μ˜ˆμ™ΈλŠ” μ—λŸ¬λ₯Ό μž‘μ„ ν•„μš”κ°€ μ—†κ±°λ‚˜, ν†΅μƒμ μœΌλ‘  μž‘μ§€ μ•ŠλŠ”λ°, μ΄μœ λŠ” μ•„λž˜μ™€ κ°™λ‹€.

  • 볡ꡬ가 λΆˆκ°€λŠ₯ν•œ 상황일 수 있음

  • 더 싀행해봐야 μ˜λ―Έκ°€ μ—†κ±°λ‚˜ λ“λ³΄λ‹€λŠ” 싀이 λ§Žμ„ 수 있음

λ•Œλ¬Έμ— 보톡은 λŸ°νƒ€μž„ μ˜ˆμ™Έλ₯Ό μž‘μ§€ μ•Šκ³ , ν•΄λ‹Ή μŠ€λ ˆλ“œλŠ” μ μ ˆν•œ 였λ₯˜ λ©”μ‹œμ§€λ₯Ό λ‚΄λ±‰μœΌλ©° μ€‘λ‹¨λ˜λ„λ‘ ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€. λ§Œμ•½ 볡ꡬ할 수 μžˆλ‹€κ³  νŒλ‹¨λœλ‹€λ©΄ 검사 μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹μ§€λ§Œ, ν™•μ‹ ν•˜κΈ° μ–΄λ €μš΄ κ²½μš°μ—” λŸ°νƒ€μž„ μ˜ˆμ™Έλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ’‹λ‹€.

Error

μ—λŸ¬λŠ” 보톡 JVMμ—μ„œ λ°œμƒν•˜λŠ” 문제λ₯Ό λ‚˜νƒ€λ‚΄λŠ”λ°, Error 클래슀λ₯Ό μƒμ†ν•˜μ—¬ μ‚¬μš©ν•˜κ±°λ‚˜ 직접 λ˜μ§€λŠ” 것은 쒋지 μ•Šλ‹€.(AssertionErrorλŠ” μ˜ˆμ™Έ) λ•Œλ¬Έμ— 직접 κ΅¬ν˜„ν•˜λŠ” 비검사 throwable은 λͺ¨λ‘ RuntimeException의 ν•˜μœ„ ν΄λž˜μŠ€κ°€ λ˜μ–΄μ•Ό ν•œλ‹€.

Throwable

Throwable은 검사 μ˜ˆμ™Έ, λŸ°νƒ€μž„ μ˜ˆμ™Έ, μ—λŸ¬μ˜ μ΅œμƒμœ„ 클래슀인데, 이 클래슀λ₯Ό 직접 μ‚¬μš©ν•  일은 μ—†μœΌλ‹ˆ, μ‚¬μš©ν•˜μ§€ μ•Šλ„λ‘ ν•˜μž.

Last updated