Skip to content

Latest commit

ย 

History

History
37 lines (29 loc) ยท 2.34 KB

Item_73._translate_low_level_exception.md

File metadata and controls

37 lines (29 loc) ยท 2.34 KB

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

์˜ˆ์™ธ ๋ฒˆ์—ญ

์ €์ˆ˜์ค€(Low-Level) ์˜ˆ์™ธ๋ฅผ ๊ทธ๋Œ€๋กœ ์ „ํŒŒํ•˜๋Š” ๊ฒƒ์˜ ๋ฌธ์ œ์ 

  • API ๊ธฐ์ค€์—์„œ, ํ˜ธ์ถœ์ž๊ฐ€ ์˜๋„ํ•œ ๋™์ž‘๊ณผ ๊ด€๋ จ๋„ ์—†๋Š” ์ €์ˆ˜์ค€ ์˜ˆ์™ธ๋ฅผ ๋ฐ›์œผ๋ฉด ์˜ˆ์™ธ์˜ ๋ฐœ์ƒ ์›์ธ ์ถ”์ ์„ ์–ด๋ ต๊ฒŒ ํ•จ
  • ๋˜ํ•œ, API์˜ ๋‚ด๋ถ€ ๊ตฌํ˜„๊ณผ ์—ฎ์—ฌ ์žˆ์–ด ๋‚ด๋ถ€ ๊ตฌํ˜„ ๋ณ€๊ฒฝ์— ์˜ํ•ด ๋‹ค๋ฅธ ์˜ˆ์™ธ๊ฐ€ ๋˜์ ธ์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ์ธก์—๋„ ๊ตฌํ˜„ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•ด์งˆ ์ˆ˜ ์žˆ์Œ
  • ์ด ๊ฒฝ์šฐ ์ƒ์œ„ ๊ณ„์ธต์—์„œ ์ €์ˆ˜์ค€ ์˜ˆ์™ธ๋ฅผ ์žก์•„ ๊ณ ์ˆ˜์ค€(High-Level) ์˜ˆ์™ธ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋‹ค์‹œ ๋˜์ง€๋Š” ์˜ˆ์™ธ ๋ฒˆ์—ญ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Œ

์˜ˆ์‹œ

public E get(int index) {
	ListIterator<E> i = listIterator(index);
	try {
		return i.next();
	} catch (NoSuchElementException e) {
		throw new IndexOutOfBoundsException("์ธ๋ฑ์Šค: " + index);
	}
}
  • ์œ„์™€ ๊ฐ™์ด ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฆฌ์ŠคํŠธ์—์„œ ๊บผ๋‚ด ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์กด์žฌ
  • ๋‚ด๋ถ€ ๊ตฌํ˜„์—์„œ Iterator๋ฅผ ์ด์šฉํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๋ฆฌ์ŠคํŠธ ์‚ฌ์ด์ฆˆ๋ณด๋‹ค ํฐ ์ธ๋ฑ์Šค๊ฐ€ ์ธ์ž๋กœ ๋“ค์–ด์™”์„ ๋•Œ next()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์‹œ์ ์— NoSuchElementException ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ
  • ์‚ฌ์šฉ์ž๋Š” ์ด ์˜ˆ์™ธ๋ฅผ ๋ฐ›์œผ๋ฉด ๋ฌด์Šจ ์š”์†Œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฑด์ง€ ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Œ
  • ๋˜ํ•œ, ๋˜์ ธ์ง€๋Š” ์˜ˆ์™ธ๋Š” ๋‚ด๋ถ€ ๊ตฌํ˜„์ด Iterator๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋ฉด ๋‹ค๋ฅธ ์˜ˆ์™ธ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ
  • ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋‚ด๋ถ€ ๊ตฌํ˜„๊ณผ ๊ด€๊ณ„ ์—†์ด, ์‚ฌ์šฉ์ž๊ฐ€ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ์˜ˆ์™ธ๋ฅผ ๋ณ€๊ฒฝํ•ด ๋˜์ง€๋Š” ๊ฒƒ

์˜ˆ์™ธ ๋ฒˆ์—ญ์„ ๋‚จ์šฉํ•˜์ง€ ๋ง ๊ฒƒ

  • ์ €์ˆ˜์ค€ ์˜ˆ์™ธ๋ฅผ ๊ทธ๋Œ€๋กœ ๋˜์ง€๋Š” ๊ฒƒ๋ณด๋‹ค ์ข‹์€ ๋ฐฉ๋ฒ•์ž„์€ ๋ถ„๋ช…ํ•˜์ง€๋งŒ, ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ์ €ํ•˜์‹œํ‚ค๊ณ  ๊ตฌํ˜„ ๋ณต์žก๋„๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ
  • ๊ฐ€์žฅ ์ข‹์€ ํ•ด๊ฒฐ๋ฒ•์€ ์ €์ˆ˜์ค€ ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์„ฑ๊ณตํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ
  • ์ด๋ฅผ ์œ„ํ•ด ๋‹ค์Œ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Œ
    1. ์ƒ์œ„ ๊ณ„์ธต์—์„œ ๋ฏธ๋ฆฌ ์ธ์ž๊ฐ’์„ ๊ฒ€์‚ฌํ•˜์—ฌ ํ•˜์œ„ ๊ณ„์ธต์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ
    2. ์ƒ์œ„ ๊ณ„์ธต์—์„œ ์˜ˆ์™ธ๋ฅผ ์กฐ์šฉํžˆ ์“ฑ์‹นํ•˜์—ฌ API ํ˜ธ์ถœ์ž์—๊ฒŒ๊นŒ์ง€ ์ „ํŒŒํ•˜์ง€ ์•Š๊ธฐ
      • ์ด ๊ฒฝ์šฐ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ๋ฌธ์ œ๋ฅผ ์ „ํŒŒํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ์ ์ ˆํ•œ ๋กœ๊น… ๋“ฑ์„ ํ†ตํ•ด ์˜ˆ์™ธ๋ฅผ ์ธ์ง€ํ•˜๊ณ  ๋ถ„์„ํ•˜์—ฌ ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ