🎯 λͺ¨λ“  예제 μ†ŒμŠ€λŠ” β€£μ—μ„œ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸŽˆλ°°μ›Œ λ³Ό λ‚΄μš©

βœ… μ˜ˆμ™Έλ₯Ό 효과적으둜 ν™œμš©ν•˜μ—¬ 가독성, μ‹ λ’°μ„±, μœ μ§€λ³΄μˆ˜μ„±μ΄ λ†’μ•„μ§€λŠ” κ²½ν—˜μ— λŒ€ν•΄ μ•Œμ•„λ³Έλ‹€.

πŸ”₯ ITEM 69. μ˜ˆμ™ΈλŠ” μ§„μ§œ μ˜ˆμ™Έ μƒν™©μ—λ§Œ μ‚¬μš©ν•˜λΌ

try {
		int i = ΓΈ;
		while(true)
				range[i++].climb();
} catch (ArraylndexOutOfBoundsException e) {
}

λ‹€μŒ μ½”λ“œλŠ” μƒλ‹Ήνžˆ 직관적이지 μ•Šκ³ , λ°°μ—΄μ˜ μ›μ†Œλ₯Ό λͺ¨λ‘ μˆœνšŒν•œ ν›„ μ˜ˆμ™Έλ‘œ λ‘œμ§μ„ μ’…λ£Œμ‹œμΌ°λ‹€.

for (Mountain m range)
		m. climb();

ν‘œμ€€ κ΄€μš©λŒ€λ‘œ λ‹€μŒκ³Ό 같이 ν–ˆλ‹€λ©΄, λͺ¨λ“  ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ°”λ‘œ μ΄ν•΄ν–ˆμ„ 것이닀.

κ·Έλ ‡λ‹€λ©΄ μ™œ 에외λ₯Ό μ¨μ„œ 루프λ₯Ό μ’…λ£Œν–ˆμ„κΉŒ?

μ΄λŠ” 잘λͺ»λœ 좔둠을 근거둜 μ„±λŠ₯을 높여보렀 ν•œ 것이닀. JVM은 배열에 μ ‘κ·Όν•  λ•Œλ§ˆλ‹€ 경계λ₯Ό λ„˜μ§€ μ•ŠλŠ”μ§€ κ²€μ‚¬ν•˜λŠ”λ°, 일반적인 λ°˜λ³΅λ¬Έλ„ λ°°μ—΄ 경계에 λ„λ‹¬ν•˜λ©΄ μ’…λ£Œν•œλ‹€.

λ”°λΌμ„œ 이 검사λ₯Ό λ°˜λ³΅λ¬Έμ—λ„ λͺ…μ‹œν•˜λ©΄ 같은 일이 μ€‘λ³΅λ˜λ―€λ‘œ ν•˜λ‚˜λ₯Ό μƒλž΅ν•œ 것이닀. ν•˜μ§€λ§Œ μ„Έ κ°€μ§€ λ©΄μ—μ„œ 잘λͺ»λœ 좔둠이닀.

  1. μ˜ˆμ™ΈλŠ” μ˜ˆμ™Έ 상황에 μ“Έ μš©λ„λ‘œ μ„€κ³„λ˜μ—ˆμœΌλ―€λ‘œ JVM κ΅¬ν˜„μž μž…μž₯μ—μ„œλŠ” λͺ…ν™•ν•œ κ²€μ‚¬λ§ŒνΌ λΉ λ₯΄κ²Œ λ§Œλ“€μ–΄μ•Ό ν•  동기가 μ•½ν•˜λ‹€. (μ˜ˆμ™Έ μ½”λ“œμ— λŒ€ν•΄ μ΅œμ ν™”ν•˜μ§€ μ•Šμ•˜μ„ κ°€λŠ₯성이 크닀.)
  2. μ½”λ“œλ₯Ό try-catch 블둝 μ•ˆμ— λ„£μœΌλ©΄ JVM이 μ μš©ν•  수 μžˆλŠ” μ΅œμ ν™”κ°€ μ œν•œλœλ‹€.
  3. 배열을 μˆœνšŒν•˜λŠ” ν‘œμ€€ κ΄€μš©κ΅¬λŠ” μ•žμ„œ κ±±μ •ν•œ 쀑볡 검사λ₯Ό μˆ˜ν–‰ν•˜μ§€ μ•ŠλŠ”λ‹€. JVM이 μ•Œμ•„μ„œ μ΅œμ ν™”ν•΄ μ—†μ• μ€€λ‹€.