🌏 WEB/JAVA

λ‚˜λ§Œ μ–΄λ €μš΄ μ˜ˆμ™Έμ²˜λ¦¬

μ• μ •μ“° 2022. 5. 19. 19:06

개발 ν•˜λ©΄μ„œ λ‹Ήμ—°ν•œ λΆ€λΆ„μ΄μ˜€μ§€λ§Œ λ‚˜μ—κ² μƒˆλ‘­κ²Œ λ‹€κ°€μ™”λ˜ μ˜ˆμ™Έμ²˜λ¦¬ ... γ…œ 

리뷰 ν•΄μ£Όμ‹œλŠ” λ§€λ‹ˆμ €λ‹˜μ΄ λ„ˆλ¬΄ 잘 μ•Œλ €μ£Όμ…”μ„œ 정리 ν•΄λ΄…λ‹ˆλ‹€ ( κ²©ν•œ 감사 πŸ₯Ή )

 

 

μ†Œμ œλͺ©μ΄ μ—°κ΄€λ˜μ–΄ μ΄μ–΄μ§€μ§€λŠ” μ•Šκ³  μƒν™©λ§ˆλ‹€ μ˜ˆμ™Έμ²˜λ¦¬ ν–ˆλ˜ 뢀뢄을 λ©”λͺ¨ν–ˆμŠ΅λ‹ˆλ‹€.

 


μ˜ˆμ™Έ λ°œμƒ μ‹œ 쑰치λ₯Ό λͺ»ν•˜λŠ” 경우 & κ΄€λ¦¬ν•˜μ§€ λͺ»ν•˜λŠ” 경우

POINT

* λ°œμƒν• λ§Œ κ³³ μ—μ„œ catch ν›„ λ©”μ‹œμ§€λ₯Ό μ λŠ”λ‹€. (μ˜ˆμ™Έμƒν™©μ„ μ •ν™•νžˆ μ„œμˆ ν•œλ‹€)
* μ–Έμ²΄ν¬μ˜ˆμ™Έλ‘œ λ³€κ²½ν•œλ‹€.

 

μ˜ˆμ™Έλ₯Ό μž‘μ§€ λͺ»ν•˜λ©΄ μžλ°”μ—μ„œλŠ” ν•΄λ‹Ή 정보λ₯Ό μžλ™μœΌλ‘œ 좜λ ₯ν•©λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μ‹€νŒ¨μ›μΈμ„ 뢄석할 λ•Œ λ³Ό 수 μžˆλŠ” μ •λ³΄λŠ” μŠ€νƒμ •λ³΄μΌ κ²½μš°κ°€ 많기 λ•Œλ¬Έμ—

log 둜 μ˜ˆμ™Έλ₯Ό κ΄€λ¦¬ν•˜κ³  μžˆλ‹€λ©΄ μ‹€νŒ¨ 원인에 κ΄€ν•œ 정보λ₯Ό κ°€λŠ₯ν•œ 많이 λ‹΄μ•„ λ°˜ν™˜ν•˜μ—¬ 

μΆ”μ ν•˜κΈ° 쉽도둝 ν•˜λŠ”κ²Œ μ€‘μš”ν•©λ‹ˆλ‹€!

 

1. λ°œμƒν•œ μ˜ˆμ™Έμ— λŒ€ν•œ λͺ¨λ“  값을 μ‹€νŒ¨ λ©”μ‹œμ§€μ— λ‹΄λŠ”λ‹€.

- λ‹¨μˆœνžˆ catch ν›„ throw μ‹œν‚€λŠ” 것은 μ˜ˆμ™ΈλΈ”λž™ν™€μ— 빠질 수 μžˆλ‹€.

 

주의! ) μ‹€μ œ μ‚¬μš©μžμ—κ²Œ 보여쀄 였λ₯˜ λ©”μ‹œμ§€μ™€ ν•¨κ»˜ μ‚¬μš©ν•˜λ©΄ μ•ˆλœλ‹€.

μ‚¬μš©μžμ—κ²ŒλŠ” κ°„λ‹¨ν•˜κ³  λͺ…λ£Œν•˜κ²Œ μ–΄λ–€ 였λ₯˜κ°€ λ‚¬λŠ”μ§€ μ„€λͺ…ν•˜κ³ 

μ˜ˆμ™Έ λ©”μ‹œμ§€λŠ” κ°€λ…μ„±λ³΄λ‹€λŠ” μ–΄λ–€ μ—λŸ¬κ°€ λ°œμƒν–ˆλŠ”μ§€μ— λŒ€ν•œ λ‚΄μš©μ„ μ€‘μš”μ‹œ ν•΄μ•Όν•œλ‹€.

 

2. μ‹€μ œ 둜직 κ³Ό μ˜ˆμ™Έμ²˜λ¦¬ 뢀뢄이 λ‚˜λ‰˜μ–΄μ Έ ν•„μš”ν•œ 뢀뢄에 집쀑할 수 μžˆλ„λ‘ ν•œλ‹€.

 

3. 언체크 μ˜ˆμ™Έ 

 RuntimeException 을 μƒμ†ν•œ μ˜ˆμ™Έλ“€μ€ λ”°λ‘œ 언체크 μ˜ˆμ™ΈλΌκ³  ν•œλ‹€(λŸ°νƒ€μž„ μ˜ˆμ™ΈλΌκ³ λ„ 함) 

언체크 μ˜ˆμ™ΈλŠ” λ”°λ‘œ catch 문으둜 μž‘κ±°λ‚˜, thrwos ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

 

보톡 μž…μΆœλ ₯ κ΄€λ ¨ ν΄λž˜μŠ€λ“€μ€ 항상 Exception 처리λ₯Ό ν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

μž…μΆœλ ₯μ΄μ§€λ§Œ μ—†μœΌλ©΄ μ‹€ν–‰μ‹œν‚€μ§€ μ•Šμ•„λ„ λ˜λŠ” λΆ€λΆ„ 은 λ¬΄μ‹œν•˜κ³  계속 λ™μž‘ν•˜κ²Œ 두어야 ν•˜κΈ° λ•Œλ¬Έμ— RuntimeException 이 μžˆλŠ”κ²ƒ κ°™λ‹€. 언체크 μ˜ˆμ™ΈλŠ” λ‘œμ§μ— 따라 μΆ©λΆ„νžˆ κ³ λ―Ό ν›„ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

* μ–Έμ²΄ν¬μ§€λ§Œ μ–΄λ–€ μ—λŸ¬κ°€ λ°œμƒν–ˆλŠ”μ§€μ— λŒ€ν•œ λ‚΄μš©μ€ ν•„μˆ˜λ‘œ μž‘μ„±ν•˜κΈ°

 

μ˜ˆμ™Έ κ΄€λ¦¬ν•˜κΈ°

POINT

μ˜ˆμ™Έ 볡ꡬ, μ˜ˆμ™Έ μ „ν™˜ , μ˜ˆμ™Έ νšŒν”Ό

Try with resource

- try μ½”λ“œ 블둝이 λλ‚ λ•Œ μžμ›μ„ μ’…λ£Œμ‹œμΌœμ€€λ‹€. 즉, finally μ΄γ…£λ‚˜ catch 블둝에 μ’…λ£Œ 처리λ₯Ό ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

try (SomeResource resource = getResource()) {
    use(resource);
} catch(...) {
    ...
}

μœ„μ™€ 같이 μ‚¬μš©ν•˜λŠ”λ° try 에 μ „λ‹¬λ˜λŠ” μžμ›μ€ AutoCloseable μΈν„°νŽ˜μ΄μŠ€μ˜ κ΅¬ν˜„μ²΄λ‘œ ν•œμ •λœλ‹€.

(μžμ›μ„ μžλ™μœΌλ‘œ μ’…λ£Œ μ‹œμΌœμ£ΌλŠ” κ΅¬ν˜„μ²΄κ°€ μ œν•œ λ˜μ–΄μžˆλ‹€.)

 

μ˜ˆμ™Έ νšŒν”Ό

- ν•΄λ‹Ή 둜직이 μ•„λ‹Œ ν˜ΈμΆœν•˜λŠ” λΆ€λΆ„μ—μ„œ Handling ν•˜λ„λ‘ ν•œλ‹€.

private void getUserInfo() throws XXXException{
}

μœ„μ™€ 같은 μ½”λ“œκ°€ Exception λ°œμƒμ‹œ throwsλ₯Ό 톡해 호좜 된 λΆ€λΆ„μœΌλ‘œ ν•΄λ‹Ή μ˜ˆμ™Έλ₯Ό λ˜μ Έλ²„λ¦¬λ©΄μ„œ μ˜ˆμ™Έμ²˜λ¦¬λ₯Ό νšŒν”Όν•˜λŠ” 방식이닀.

* 호좜 λΆ€λΆ„μ—μ„œ μ˜ˆμ™Έλ₯Ό μ²˜λ¦¬ν•˜λŠ”κ²Œ λ§žμ„ κ²½μš°μ— μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

* ν•΄λ‹Ήλ‘œμ§μ—μ„œ μ²˜λ¦¬ν•˜μ§€ μ•Šκ³  νšŒν”Όν•˜λ €λŠ” λͺ©μ , 확신이 μžˆμ–΄μ•Όλ§Œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

λ°˜μ‘ν˜•