Search
Duplicate
πŸ˜€

15. μ˜ˆμ™Έμ²˜λ¦¬

νƒœκ·Έ

Java의 μ˜ˆμ™Έμ²˜λ¦¬

β€’
μžλ°”λŠ” 객체지ν–₯ μ–Έμ–΄μ΄λ―€λ‘œ μ˜ˆμ™Έλ„ 객체둜 μ²˜λ¦¬ν•œλ‹€.
β—¦
μ˜ˆμ™Έλ₯Ό 객체둜 μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ 객체λ₯Ό 생성할 ν΄λž˜μŠ€κ°€ ν•„μš”ν•˜λ‹€.
β€’
λ°œμƒ κ°€λŠ₯성이 μžˆλŠ” λͺ¨λ“  μ˜ˆμ™Έ 상황을 μ˜ˆμΈ‘ν•˜μ—¬ λ‹€μ–‘ν•œ μ˜ˆμ™Έ 클래슀λ₯Ό μ œκ³΅ν•¨
β€’
ν”„λ‘œκ·Έλž¨μ— μ˜ˆμ™Έμ²˜λ¦¬ λ‘œμ§μ„ κ΅¬ν˜„ν•˜μ§€ μ•Šμ€ κ²½μš°μ—λŠ” κΈ°λ³Έ μ˜ˆμ™Έμ²˜λ¦¬ ν•Έλ“€λŸ¬κ°€ μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό μˆ˜ν–‰

java의 μ˜ˆμ™Έ 처리 방법

μ˜ˆμ™Έκ°€ λ°œμƒν•œ λ©”μ„œλ“œ λ‚΄μ—μ„œ 직접 μ²˜λ¦¬ν•˜λŠ” 방식
β€’
try-catch
β€’
닀쀑 catch
β€’
상속을 μ΄μš©ν•œ μ˜ˆμ™Έμ²˜λ¦¬
β€’
finally 블둝
ν•΄λ‹Ή λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œ 곳으둜 μ˜ˆμ™Έ 처리λ₯Ό λ„˜κΈ°λŠ” 방식
β€’
throws μ˜ˆμ•½μ–΄

try-catch ꡬ문

try 블둝
β€’
ν”„λ‘œκ·Έλž˜λ¨Έκ°€ ν”„λ‘œκ·Έλž¨ μ€‘μ—μ„œ μ˜ˆμ™Έκ°€ λ°œμƒν•  수 μžˆλŠ” μ†ŒμŠ€μ½”λ“œλ“€μ„ try 블둝 μ•ˆμ— μž‘μ„±
β€’
try 블둝은 μ΅œμ†Œν•œ ν•˜λ‚˜μ˜ catch 블둝이 μžˆμ–΄μ•Ό 함
catch 블둝
β€’
try 블둝 λ‹€μŒμ— μœ„μΉ˜
β€’
catch λΈ”λ‘μ˜ λ§€κ°œλ³€μˆ˜λŠ” μ˜ˆμ™Έ 객체가 λ°œμƒν–ˆμ„ λ•Œ μ°Έμ‘°ν•˜λŠ” λ³€μˆ˜λͺ…μœΌλ‘œ, λ°˜λ“œμ‹œ java.lang.Throwable 클래슀의 ν•˜μœ„ 클래슀 νƒ€μž…μœΌλ‘œ μ„ μ–Έλ˜μ–΄μ•Ό 함
β€’
μžλ°”μ—μ„œ μ§€μ›ν•˜λŠ” λͺ¨λ“  μ˜ˆμ™Έ ν΄λž˜μŠ€λŠ” Exception 클래슀의 μžμ‹ 클래슀둜 μ‘΄μž¬ν•œλ‹€.
β—¦
λ”°λΌμ„œ ν˜•λ³€ν™˜μ— μ˜ν•΄ Exception νƒ€μž…μ˜ λ³€μˆ˜λ‘œ ν• λ‹Ήν•  수 μžˆλ‹€.
β—¦
μ•„λž˜μ™€κ°™μ΄ Exception e λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 ν•˜λ‚˜μ˜ catch κ΅¬λ¬Έμ—μ„œ μ²˜λ¦¬ν•  수 μžˆλ‹€.
β–ͺ
ν•˜μ§€λ§Œ ꡬ체적으둜 μ–΄λ–€ μ˜ˆμ™Έκ°€ λ°œμƒν•˜μ˜€λŠ”μ§€λ₯Ό μ•Œ 수 μ—†λ‹€.

닀쀑 catch 블둝

β€’
μ—¬λŸ¬ 개의 μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•  수 있음

try-catch vs finally

try-catch
β€’
try 블둝 λ‚΄μ˜ λ¬Έμž₯μ—μ„œ μ˜ˆμ™Έκ°€ λ°œμƒν•˜μ§€ μ•Šμ€ 경우
β†’ try 블둝은 μˆ˜ν–‰, catch 블둝은 μˆ˜ν–‰λ˜μ§€ μ•ŠμŒ
β€’
try 블둝 λ‚΄μ˜ λ¬Έμž₯μ—μ„œ μ˜ˆμ™Έκ°€ λ°œμƒν•œ 경우
β†’ try 블둝 μˆ˜ν–‰ X, catch 블둝 μˆ˜ν–‰
finally
β€’
finally 블둝은 try-catch 블둝 지정 μ‹œ try 블둝과 ν•¨κ»˜ μ‚¬μš©λ  수 있음
β—¦
ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©ν•˜μ§€λŠ” μ•ŠμŒ, ν”„λ‘œκ·Έλž˜λ¨Έ νŽΈμ˜μ— 따라 μ‚¬μš©
β€’
finally 블둝이 μ‚¬μš©λ˜λ©΄ finally λΈ”λ‘μ˜ λ‚΄μš©μ€ μ˜ˆμ™Έ λ°œμƒ μœ λ¬΄λ‚˜ μ˜ˆμ™Έ catch μœ λ¬΄μ™€ 상관 없이 무쑰건 μˆ˜ν–‰λ¨
β€’
DB 연동 둜직, 파일 μž…μΆœλ ₯ λ‘œμ§μ„ μˆ˜ν–‰ν•œ 후에 λ°˜λ“œμ‹œ μˆ˜ν–‰λ˜μ–΄μ•Ό ν•  둜직이 μžˆλŠ” κ²½μš°μ— μ‚¬μš©

throws μ˜ˆμ•½μ–΄

β€’
μ˜ˆμ™Έκ°€ λ°œμƒν•œ λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•œ μ§€μ μœΌλ‘œ μ˜ˆμ™Έλ₯Ό μ „λ‹¬ν•˜μ—¬ μ²˜λ¦¬ν•˜λŠ” 방법
β€’
μ—¬λŸ¬ 개의 μ˜ˆμ™Έ 클래슀 이름을 λ‚˜μ—΄ν•  수 μžˆλ‹€.

μ‚¬μš©μž μ •μ˜ μ˜ˆμ™Έ 처리 class

β€’
APIμ—μ„œ μ œκ³΅ν•˜μ§€ μ•ŠλŠ” μ˜ˆμ™Έμ˜ 경우 κ°œλ°œμžκ°€ 직접 μ˜ˆμ™Έ 클래슀λ₯Ό μ •μ˜ν•΄μ„œ μ‚¬μš©ν•œλ‹€.
β€’
μ΄λ•Œ μ‚¬μš©μž μ •μ˜ μ˜ˆμ™Έ ν΄λž˜μŠ€λŠ” λͺ¨λ“  μ˜ˆμ™Έ 클래슀의 μ΅œμƒμœ„ 클래슀인 java.lang.Exception 클래슀λ₯Ό 상속받아 μ •μ˜ν•΄μ•Ό ν•œλ‹€.
β€’
ν”„λ‘œκ·Έλž¨μ΄ μžλ™ μƒμ„±ν•˜λŠ” μ˜ˆμ™Έ 이외에도 μ‚¬μš©μžκ°€ throws μ˜ˆμ•½μ–΄λ₯Ό 톡해 κ°•μ œλ‘œ μ˜ˆμ™Έλ₯Ό λ°œμƒμ‹œν‚€κ³ , try-catch ꡬ문을 톡해 μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό ν•  수 μžˆλ‹€.