Chapter 10 ์˜ˆ์™ธ

์˜ˆ์™ธ๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•œ๋‹ค๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ€๋…์„ฑ, ์‹ ๋ขฐ์„ฑ, ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์•„์ง€์ง€๋งŒ ๋ฐ˜๋Œ€๋กœ ์ž˜๋ชป ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ˜๋Œ€์˜ ํšจ๊ณผ๋งŒ ๋‚˜ํƒ€๋‚œ๋‹ค.

Item 69 ์˜ˆ์™ธ๋Š” ์ง„์งœ ์˜ˆ์™ธ ์ƒํ™ฉ์—์„œ๋งŒ ์‚ฌ์šฉํ•˜๋ผ

์˜ˆ์™ธ๋Š” ์˜ˆ์™ธ์ƒํ™ฉ์—์„œ๋งŒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ ์ ˆ๋Œ€๋กœ ์ผ์ƒ์ ์ธ ์ œ์–ด ํ๋ฆ„์šฉ์œผ๋กœ ์“ฐ์—ฌ์„œ๋Š” ์•ˆ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด ์ผ๋ฐ˜์ ์ธ ๋ฐ˜๋ณต๋ฌธ์˜ ๊ฒฝ์šฐ try-catch ๋ฌธ์— ๋„ฃ์œผ๋ฉด JVM ์ด ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ์ ํ™”๊ฐ€ ์ œํ•œ๋œ๋‹ค. (์„ฑ๋Šฅ์ด 2๋ฐฐ์ด์ƒ ๋Š๋ฆผ)

์ž˜ ์„ค๊ณ„๋œ API ๋ผ๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ •์ƒ์ ์ธ ์ œ์–ด์˜ ํ๋ฆ„์—์„œ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•  ์ผ์ด ์—†๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค.

Item 70 ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์—๋Š” ๊ฒ€์‚ฌ ์˜ˆ์™ธ๋ฅผ, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ฅ˜์—๋Š” ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

์ž๋ฐ”๋Š” ๋ฌธ์ œ ์ƒํ™ฉ์„ ์•Œ๋ฆฌ๋Š” ํƒ€์ž… (throwable) ์œผ๋กœ ๊ฒ€์‚ฌ ์˜ˆ์™ธ, ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ, ์—๋Ÿฌ ์ด๋ ‡๊ฒŒ ์„ธ๊ฐ€์ง€ ์œ ํ˜•์„ ์ œ๊ณตํ•œ๋‹ค.

ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์—์„œ ๋ณต๊ตฌํ•ด์•ผ ํ•œ๋‹ค ์—ฌ๊ฒจ์ง€๋Š” ์ƒํ™ฉ์ด๋ผ๋ฉด ๊ฒ€์‚ฌ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ (๊ฒ€์‚ฌ์™€ ๋น„๊ฒ€์‚ฌ ์˜ˆ์™ธ๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ธฐ๋ณธ ๊ทœ์น™์ด๋‹ค)

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ผ๋•Œ๋Š” ๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ.

๋Œ€๋ถ€๋ถ„์˜ ๋น„ ๊ฒ€์‚ฌ throwable ์€ ๋ชจ๋‘ RuntimeException ์˜ ํ•˜์œ„ ํด๋ž˜์Šค์—ฌ์•ผ ํ•œ๋‹ค.

throwable ํด๋ž˜์Šค๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์˜ค๋ฅ˜๋ฅผ ์ƒ์„ธํžˆ ๊ธฐ์ˆ ํ•˜์ง€ ์•Š๋Š”๋ฐ ์ด๋Š” ๋‹ค์‹œ ๋งํ•ด JVM ๋ฆด๋ฆฌ์ฆˆ ๋ฒ„์ „ ๋ณ„๋กœ ๋ฉ”์„ธ์ง€ ํฌ๋งท์ด ๋‹ค๋ฅผ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

๋˜๋„๋ก์ด๋ฉด throwable ์€ ์ •์˜ํ•˜์ง€ ์•Š๋„๋ก ํ•˜์ž

Item 71 ํ•„์š” ์—†๋Š” ๊ฒ€์‚ฌ ์˜ˆ์™ธ ์‚ฌ์šฉ์€ ํ”ผํ•˜๋ผ

๊ผญ ํ•„์š”ํ•œ ๊ณณ์—์„œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๊ฒ€์‚ฌ ์˜ˆ์™ธ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ „์„ฑ์„ ๋†’์—ฌ์ฃผ์ง€๋งŒ, ๋‚จ์šฉํ•˜๋ฉด ์“ฐ๊ธฐ ๊ณ ํ†ต์Šค๋Ÿฌ์šด API ๋ฅผ ๋‚ณ๋Š”๋‹ค.

API ํ˜ธ์ถœ์ž๊ฐ€ ์˜ˆ์™ธ ์ƒํ™ฉ์—์„œ ๋ณต์ˆ˜ํ•  ๋ฐฉ๋ฒ•์ด ์—†๋‹ค๋ฉด ๋น„๊ฒ€์‚ฌ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€์ž.

Item 72 ํ‘œ์ค€ ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

ํ‘œ์ค€ ์˜ˆ์™ธ๋ฅผ ์žฌ์‚ฌ์šฉ ํ•˜์—ฌ ์–ป๋Š” ์ด๋“์€ ์ตํžˆ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๋‹ค๋Š” ์ ์ด๋‹ค.

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์˜ˆ์™ธ๋Š” IllegalArgumentException ์ด๋‹ค.
ํ˜ธ์ถœ์ž๊ฐ€ ์ธ์ˆ˜๋กœ ๋ถ€์ ์ ˆํ•œ ๊ฐ’์„ ๋„˜๊ธธ ๋•Œ ๋˜์ง€๋Š” ์˜ˆ์™ธ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

IllegalStateException ๋„ ์ž์ฃผ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ์˜ˆ์™ธ๋Š” ๋Œ€์ƒ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ํ˜ธ์ถœ๋œ ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š์„ ๋•Œ ์ฃผ๋กœ ๋˜์ง„๋‹ค.

Exception RuntimeException Throwable Error ๋“ฑ์€ ์ง์ ‘ ์žฌ์‚ฌ์šฉ ํ•˜์ง€ ๋ง์ž
์ด ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ ๋‹ค๋ฅธ ์˜ˆ์™ธ๋“ค์˜ ์ƒ์œ„ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ ์„ฑ๊ฒฉ์˜ ์˜ˆ์™ธ๋“ค์— ๋Œ€ํ•ด์„œ ํฌ๊ด„์ ์œผ๋กœ ์ ์šฉ๋˜์–ด ์•ˆ์ •์ ์œผ๋กœ ํ…Œ์Šคํ•˜๊ธฐ ์–ด๋ ต๋‹ค.

์•„๋ž˜๋Š” ์ฃผ์š” ์‚ฌ์šฉ๋˜๋Š” ์˜ˆ์™ธ ์œ ํ˜•์„ ์ •๋ฆฌํ•œ ๊ฒƒ์ด๋‹ค.

์˜ˆ์™ธ ์ฃผ์š” ์“ฐ์ž„
IllegalArgumentException ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ’์ด ์ธ์ˆ˜๋กœ ๊ฑด๋„ค์กŒ์„ ๋•Œ
(null์€ ๋”ฐ๋กœ NullPointerException์œผ๋กœ ์ฒ˜๋ฆฌ)
IllegalStateException ๊ฐ์ฒด๊ฐ€ ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ์— ์ ์ ˆํ•˜์ง€ ์•Š์€ ์ƒํƒœ์ผ ๋•Œ
NullPointerException null์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฉ”์„œ๋“œ์— null์„ ๊ฑด๋„ธ์„ ๋•Œ
IndexOutOfBoundsException ์ธ๋ฑ์Šค๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋„˜์–ด์„ฐ์„ ๋•Œ
ConcurrentModificationException ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋™์‹œ ์ˆ˜์ •์ด ๋ฐœ๊ฒฌ๋์„ ๋•Œ
UnsupportedOperationException ํ˜ธ์ถœํ•œ ๋ฉ”์„œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์„ ๋•Œ

Item 73 ์ถ”์ƒํ™” ์ˆ˜์ค€์— ๋งž๋Š” ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๋ผ

๋ฉ”์„œ๋“œ๊ฐ€ ์ €์ˆ˜์ค€์˜ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๊นฅ์œผ๋กœ ์ „ํŒŒํ•ด๋ฒ„๋ฆด ๋•Œ ๋‚ด๋ถ€๊ตฌํ˜„ ๋ฐฉ์‹์„ ๋“œ๋Ÿฌ๋‚ด์–ด ์œ— ๋ ˆ๋ฒจ์˜ API ๋ฅผ ์˜ค์—ผ์‹œํ‚จ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๋ ค๋ฉด ์ƒ์œ„ ๊ณ„์ธต์—์„œ๋Š” ์ €์ˆ˜์ค€์˜ ์˜ˆ์™ธ๋ฅผ ์žก์•„ ์ž์‹ ์˜ ์ถ”์ƒํ™” ์ˆ˜์ค€์— ๋งž๋Š” ์˜ˆ์™ธ๋กœ ๋˜์ ธ์•ผ ํ•œ๋‹ค. (Exception translation : ์˜ˆ์™ธ ๋ฒˆ์—ญ)

ํ•˜์ง€๋งŒ ์˜ˆ์™ธ๋ฒˆ์—ญ์€ ์šฐ์ˆ˜ํ•œ ๋ฐฉ๋ฒ•์ด๋‚˜ ๋ฌดํ„ฑ๋Œ€๊ณ  ์˜ˆ์™ธ๋ฅผ ์ „ํŒŒํ•˜๋Š”๊ฒƒ์€ ์œ„ํ—˜ํ•˜๋‹ˆ ๋ช…์‹ฌํ•˜๋„๋ก ํ•˜์ž.

Item 74 ๋ฉ”์„œ๋“œ๊ฐ€ ๋˜์ง€๋Š” ๋ชจ๋“  ์˜ˆ์™ธ๋ฅผ ๋ฌธ์„œํ™” ํ•˜๋ผ

๊ฒ€์‚ฌ ์˜ˆ์™ธ๋Š” ํ•ญ์ƒ ๋”ฐ๋กœ๋”ฐ๋กœ ์„ ์–ธํ•˜๊ณ , ๊ฐ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ์„ ์ž๋ฐ”๋…์˜ @throw ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •ํ™•ํžˆ ๋ฌธ์„œํ™” ํ•˜์ž

๋ฉ”์„œ๋“œ๊ฐ€ ๋˜์งˆ ์ˆ˜ ์žˆ๋Š” ์˜ˆ์™ธ๋ฅผ @throws ํƒœ๊ทธ๋กœ ๋ฌธ์„œํ™”ํ•˜๋˜ ๋น„๊ฒ€์‚ฌ ์˜ˆ์™ธ๋Š” ๋ฉ”์„œ๋“œ ์„ ์–ธ์˜ throws ๋ชฉ๋ก์— ๋„ฃ์ง€ ๋ง์ž

ํ•œ ํด๋ž˜์Šค์— ์ •์˜๋œ ๋งŽ์€ ๋ฉ”์„œ๋“œ๊ฐ€ ๊ฐ™์€ ์ด์œ ๋กœ ๊ฐ™์€ ์˜ˆ์™ธ๋ฅผ ๋˜์ง„๋‹ค๋ฉด ๊ทธ ์˜ˆ์™ธ๋ฅผ ๊ฐ๊ฐ์˜ ๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹Œ ํด๋ž˜์Šค ์„ค๋ช…์— ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.
์ด๋Š” NullPointerException ์ด ๊ฐ€์žฅ ํ”ํ•œ ์‚ฌ๋ก€์ด๋‹ค.

Item 75 ์˜ˆ์™ธ์˜ ์ƒ์„ธ ๋ฉ”์‹œ์ง€์— ์‹คํŒจ ๊ด€๋ จ ์ •๋ณด๋ฅผ ๋‹ด์œผ๋ผ

์‹คํŒจ ์ˆœ๊ฐ„์„ ํฌ์ฐฉํ•˜๋ ค๋ฉด ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ์— ๊ด€๋ จ๋œ ๋ชจ๋“  ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํ•„๋“œ๊ฐ’์„ ์‹คํŒจ ๋ฉ”์„ธ์ง€์— ๋‹ด์•„์•ผ ํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด IndexOutOfBoundsException ์˜ ์ƒ์„ธ ๋ฉ”์„ธ์ง€๋Š” ๋ฒ”์œ„์˜ ์ตœ์†Ÿ๊ฐ’๊ณผ ์ตœ๋Œ€๊ฐ’, ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚ฌ๋‹ค๋Š” ์ธ๋ฑ์Šค ๊ฐ’๋“ฑ์„ ์ œ๊ณตํ•ด์ค˜์•ผ ํ•œ๋‹ค. (๋ฌผ๋ก  ๋ณด์•ˆ์ •๋ณด๊ฐ™์€ ๊ฒƒ๋“ค์€ ์˜ˆ์™ธ๋‹ค)

์‹คํŒจ์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ ์ ˆํžˆ ํฌ์ฐฉํ•˜๋ ค๋ฉด ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์˜ˆ์™ธ ์ƒ์„ฑ์ž์—์„œ ๋ชจ๋‘ ๋ฐ›์•„์„œ ์ƒ์„ธ ๋ฉ”์„ธ์ง€๊นŒ์ง€ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•ด ๋†“๋Š” ๋ฐฉ๋ฒ•๋„ ๊ดœ์ฐฎ๋‹ค.

์˜ˆ๋ฅผ๋“ค๋ฉด ํ˜„์žฌ์˜ IndexOutOfBoundsException ์ƒ์„ฑ์ž๋Š” String ๋„ ๋ฐ›์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌํ˜„ํ•ด๋„ ์ข‹๋‹ค.

/**
 * IndexOutOfBoundsException์„ ์ƒ์„ฑํ•œ๋‹ค. *
 * @param lowerBound ์ธ๋ฑ์Šค์˜ ์ตœ์†Ÿ๊ฐ’
 * @param upperBound ์ธ๋ฑ์Šค์˜ ์ตœ๋Œ“๊ฐ’ + 1 * @param index ์ธ๋ฑ์Šค์˜ ์‹ค์ ฏ๊ฐ’
 */
public IndexOfOutOfBoundsException(int lowerBound, int upperBound, int index) {
  // ์‹คํŒจ๋ฅผ ํฌ์ฐฉํ•˜๋Š” ์ƒ์„ธ ๋ฉ”์‹œ์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
  super(String.format("์ตœ์†Ÿ๊ฐ’: %d, ์ตœ๋Œ“๊ฐ’: %d, ์ธ๋ฑ์Šค: %d", lowerBound, upperBound, index));

  // ํ”„๋กœ๊ทธ๋žจ์—์„œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์‹คํŒจ ์ •๋ณด๋ฅผ ์ €์žฅํ•ด๋‘”๋‹ค.
  this.lowerBound = lowerBound;
  this.upperBound = upperBound;
  this.index = index;
}

Item 76 ๊ฐ€๋Šฅํ•œ ํ•œ ์‹คํŒจ ์›์ž์ ์œผ๋กœ ๋งŒ๋“ค๋ผ

ํ˜ธ์ถœ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋”๋ผ๋„ ํ•ด๋‹น ๊ฐ์ฒด๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ „ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ํŠน์„ฑ์„ ์‹คํŒจ ์›์ž์  (failure-atomic) ์ด๋ผ๊ณ  ํ•œ๋‹ค.

๋ฉ”์„œ๋“œ๋ฅผ ์‹คํŒจ ์›์ž์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ํƒœ์ƒ์ ์œผ๋กœ ์‹คํŒจ ์›์ž์  ์ด๋ฉฐ ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€๋Š” ์•Š์„์ˆ˜ ์ž‡์œผ๋‚˜ ๊ธฐ์กด์˜ ๊ฐ์ฒด๊ฐ€ ๋ถˆ์•ˆ์ •ํ•œ ์ƒํƒœ์— ๋น ์ง€๋Š” ์ผ์€ ์—†๋‹ค.

๋˜ํ•œ ๊ฐ€๋ณ€ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํŒจ ์›์ž์ ์œผ๋กœ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์—…์ˆ˜ํ–‰์— ์•ž์„œ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์ฆํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

public Object pop() {
  if (size == 0)
    throw new EmptyStackException();
  
  Object result = elements[--size];
  elements[size] = null;
  return result;
}

์ž„์‹œ ๋ณต์‚ฌ๋ณธ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ํ›„ ์ž‘์—…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ์›๋ž˜ ๊ฐ์ฒด์™€ ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ฉ”์„œ๋“œ ๋ช…์„ธ์— ๊ธฐ์ˆ ํ•œ ์˜ˆ์™ธ๋ผ๋ฉด ์„ค๋ น ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ๊ฐ์ฒด์˜ ์ƒํƒœ๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ „๊ณผ ๋˜‘๊ฐ™์ด ์œ ์ง€๋˜์–ด์•ผ ํ•œ๋‹ค๋Š”๊ฒƒ์ด ๊ธฐ๋ณธ ๊ทœ์น™์ด๋‹ค.
์ด ๊ทœ์น™์ด ์ง€์ผœ์ง€์ง€ ์•Š๋Š”๋‹ค๋ฉด API ์„ค๋ช…์— ๋ช…์‹œํ•ด์•ผ ํ•œ๋‹ค.

Item 77 ์˜ˆ์™ธ๋ฅผ ๋ฌด์‹œํ•˜์ง€ ๋ง๋ผ

๊ฐ„ํ˜น ์•„๋ž˜ ์ฝ”๋“œ ์ฒ˜๋Ÿผ try-catch ๊ตฌ๋ฌธ์—์„œ catch ๋ธ”๋Ÿญ์„ ๋น„์›Œ๋‘๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.

try {
  /* statement */
} catch(SomeException e) {
}

์ด๋Š” catch ๋ธ”๋Ÿญ์„ ๋น„์›Œ๋‘๋ฉด ์กด์žฌํ•  ์ด์œ ๊ฐ€ ์—†์œผ๋ฉฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ด๋„ ์•Œ์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๋Š”๊ฒƒ๊ณผ ๊ฐ™์œผ๋‹ˆ ๋ฐ˜๋“œ์‹œ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค.

์˜ˆ์™ธ๋ฅผ ๋ฌด์‹œํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค๋ฉด catch ๋ธ”๋Ÿญ ์•ˆ์— ๊ทธ๋ ‡๊ฒŒ ๊ฒฐ์ •ํ•œ ์ด์œ ์— ๋Œ€ํ•ด์„œ ์ฃผ์„์œผ๋กœ ๋‚จ๊ธฐ๊ณ  ์˜ˆ์™ธ ๋ณ€์ˆ˜์˜ ์ด๋ฆ„๋„ ignored ๋กœ ๋ฐ”๊ฟ”๋†“๋„๋ก ํ•˜์ž.

Future<Integer> f = exec.submit(planarMap::chromaticNumber);
int numColor = 4 // ๊ธฐ๋ณธ๊ฐ’. ์–ด๋–ค ์ง€๋„๋ผ๋„ ์ด ๊ฐ’์ด๋ฉด ์ถฉ๋ถ„ํ•˜๋‹ค.
try {
  numColor = f.get(1L, TimeUnit.SECONDS);
} catch (TimeoutException | ExcutionException ignored) {
  // ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉํ•œ๋‹ค (์ƒ‰์ƒ ์ˆ˜๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ฉด ์ข‹์ง€๋งŒ, ํ•„์ˆ˜๋Š” ์•„๋‹ˆ๋‹ค.)
}