πŸŒ€ Checked, Unchecked Exception

Ssong94Β·2022λ…„ 8μ›” 1일
0

πŸ“Œ Java

λͺ©λ‘ 보기
3/4

πŸŒ€ Checked, Unchecked Exception

βœ… μ˜ˆμ™Έ Exception μ•Œμ•„λ³΄κΈ°.

1. μžλ°”μ—μ„œ μ˜ˆμ™Έλž€?

μš°λ¦¬λŠ” μ˜ˆμ™Έκ°€ 일상 μƒν™œμ˜ 일뢀가 μ•„λ‹Œ 비정상적인 μƒνƒœλΌλŠ” 것을 μ•Œκ³  μžˆλ‹€.
μžλ°” ν”„λ‘œκ·Έλž˜λ°μ—μ„œ μ˜ˆμ™ΈλŠ” ν”„λ‘œκ·Έλž¨μ˜ 정상적인 흐름을 λ°©ν•΄ν•˜λŠ” μ΄λ²€νŠΈλ‹€.

2. μ˜ˆμ™Έμ˜ 원인

λ‹€μ–‘ν•œ 이유둜 μ˜ˆμ™Έκ°€ λ°œμƒν•  수 μžˆμ§€λ§Œ, μ˜ˆμ™Έμ˜ 일반적인 원인은 λ‹€μŒκ³Ό κ°™λ‹€.

  • μž…λ ₯ μž‘μ—… 쀑 μ‚¬μš©μžμ— μ˜ν•΄ (숫자 μž…λ ₯인데 문자λ₯Ό μž…λ ₯ν–ˆμ„ λ•Œ)
  • ν”„λ‘œκ·Έλž˜λ¨Έμ˜ μ‹€μˆ˜
  • λ©”λͺ¨λ¦¬ λΆ€μ‘±κ³Ό 같은 λ¦¬μ†ŒμŠ€ λΆ€μ‘±μœΌλ‘œ 인해

3. μ˜ˆμ™Έ μΉ΄ν…Œκ³ λ¦¬

Javaμ—λŠ” 두 가지 λ²”μ£Όμ˜ μ˜ˆμ™Έκ°€ μžˆλ‹€.

  1. JVM μ˜ˆμ™Έ: JVMμ—μ„œλ§Œ λ°œμƒν•˜λŠ” μ˜ˆμ™Έ 및 였λ₯˜
    예: NullPointerException, ArrayIndexOutOfBoundsException, ClassCastException.
  2. ν”„λ‘œκ·Έλž¨μ  μ˜ˆμ™Έ: μ• ν”Œλ¦¬μΌ€μ΄μ…˜ λ˜λŠ” API ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λͺ…μ‹œμ μœΌλ‘œ λ˜μ§€λŠ” μ˜ˆμ™Έ
    예: IllegalArgumentException, IllegalStateException.

4. μ˜ˆμ™Έμ˜ 계측 ꡬ쑰

Javaμ—μ„œ μ˜ˆμ™ΈλŠ” java.lang.Throwable ν΄λž˜μŠ€μ— μžˆλ‹€.
클래슀λ₯Ό μƒμ†ν•˜λŠ” 것은 두 개의 ν•˜μœ„ 클래슀 Exception 및 Error이며, λ‹€λ₯Έ ν•˜μœ„ ν΄λž˜μŠ€μ— μ˜ν•΄ μΆ”κ°€λ‘œ μƒμ†λœλ‹€.

Throwable 클래슀의 계측 κ΅¬μ‘°λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

5. μžλ°” μ˜ˆμ™Έ μœ ν˜•

주둜 Checked Exceptionκ³Ό Unchecked Exception의 두 가지 μœ ν˜•μ΄ μžˆμ§€λ§Œ Oracle에 λ”°λ₯΄λ©΄ μ‹€μ œλ‘œ μ„Έ 가지 μœ ν˜•μ˜ μ˜ˆμ™Έκ°€ μžˆλ‹€.

  1. Checked μ˜ˆμ™Έ
  2. Unchecked μ˜ˆμ™Έ
  3. Error

였λ₯˜λŠ” ν™•μΈλ˜μ§€ μ•Šμ€ μ˜ˆμ™Έ μœ ν˜•μ΄κΈ°λ„ ν•˜λ‹€.

5.1 Checked Exception

  • λͺ…μ‹œμ μœΌλ‘œ μ˜ˆμ™Έ 처리λ₯Ό ν•΄μ•Όν•œλ‹€.
  • 컴파일 μ‹œ ν™•μΈλœλ‹€.
  • RuntimeException 및 Errorλ₯Ό μ œμ™Έν•˜κ³  Throwable ν΄λž˜μŠ€μ—μ„œ 직접 μƒμ†λ˜λŠ” μ˜ˆμ™Έ 클래슀
  • 예: IOException, SQLException, ClassNotFound λ“±

5.2 Unchecked Exception

  • μ˜ˆμ™Έ 처리λ₯Ό κ°•μ œν•˜μ§€ μ•ŠλŠ”λ‹€.
  • RuntimeException 클래슀λ₯Ό μƒμ†ν•˜λŠ” μ˜ˆμ™Έ
  • λŸ°νƒ€μž„ 쀑에 ν™•μΈλœλ‹€.
  • 예: NullPointException, ArithmeticException, IndexOutOfBOundException λ“±

5.3 Error

  • 볡ꡬ할 수 μ—†λŠ” μ˜ˆμ™Έ
  • λŸ°νƒ€μž„μ—λ„ ν™•μΈλœλ‹€.
  • 예: OutOfMemoryError, VirtualMachineError, StackOverflowError λ“±

⭐ ν•œλˆˆμ— μ•Œμ•„λ³΄κΈ°

Checked ExceptionUnChecked ExceptionError
ν™•μΈμ‹œμ CompileRuntimeRuntime
λ°œμƒ μ›μΈμ™ΈλΆ€μ˜ 영ν–₯으둜 λ°œμƒμ£Όλ‘œ ν”„λ‘œκ·Έλž˜λ¨Έμ˜ μ‹€μˆ˜μ— μ˜ν•΄μ„œ λ°œμƒμ‹œμŠ€ν…œμ˜ 비정상적인 μƒν™©μ—μ„œ λ°œμƒ
처리 μ—¬λΆ€λͺ…μ‹œμ  처리 κ°•μ œκ°•μ œν•˜μ§€ μ•ŠμŒλΆˆκ°€λŠ₯
μ˜ˆμ™Έ λ°œμƒ μ‹œγ€€γ€€νŠΈλžœμž­μ…˜ 처리roll-back μ•ˆ 됨roll-backroll-back
λŒ€ν‘œ μ˜ˆμ™ΈRuntimeException을 상속받지 μ•ŠμœΌλ©΄μ„œ Exception을 μƒμ†λ°›λŠ” 클래슀
IOException, SQLException, ClassNotFound λ“±
RuntimeException을 μƒμ†λ°›λŠ” λͺ¨λ“  클래슀
NullPointException, IndexOutOfBOundException, ArithmeticException λ“±
OutOfMemoryError, StackOverflowError, VirtualMachineError λ“±
profile
λ‚΄κ°€ 볼라고 씀.

0개의 λŒ“κΈ€