[Java] try-with-resource๋ฌธ

์ด์ „ ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํฌ์ŠคํŒ…์—์„œ, finally๋ฌธ์€ ์—ฐ๊ฒฐ์„ ๋Š๊ฑฐ๋‚˜ ์ž์›์„ ์ •๋ฆฌํ• ๋•Œ ์ž์ฃผ ์“ด๋‹ค๊ณ  ํ–ˆ์—ˆ๋‹ค.

์˜ˆ์‹œ๋ฅผ ๋“ค๊ธฐ ์œ„ํ•ด ์—ด๊ณ  ๋‹ซ์„์ˆ˜ ์žˆ๋Š” Door ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•ด๋ณธ๋‹ค.
์ด๊ฑด ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜๋ฉด ๋ฐ˜๋“œ์‹œ ๋‹ซํ˜€์•ผ ํ•œ๋‹ค. image

image

๊ทธ๋Ÿผ ์ด๋Ÿฐ์‹์œผ๋กœ ์งค ์ˆ˜ ์žˆ๋‹ค. image

image ๊ธฐ๋Œ€ํ•œ ๋Œ€๋กœ ๋™์ž‘์€ ์ž˜ ํ•˜๋Š”๋ฐ...
์ฝ”๋“œ๊ฐ€ ๋„ˆ๋ฌด ์กฐ์žกํ•ด๋ณด์ด์ง€ ์•Š๋Š”๊ฐ€?

์–ด์ฐจํ”ผ finally์—์„  ๊ทธ๋ƒฅ ๋‹ซ๋Š”๊ฑฐ๋ฐ–์— ์•ˆํ•˜๋Š”๋ฐ...
์ €๊ฑธ ์–ด๋–ป๊ฒŒ ์ค„์ผ๊นŒ ํ•ด์„œ ๋‚˜์˜จ๊ฒŒ, ์ด์ œ ๋ณด์—ฌ์ค„ try-with-resource๋ฌธ์ด๋‹ค.

AutoCloseable์ด๋ž€ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ๋‹ค. ์ด๊ฑด void close() ํ•˜๋‚˜๋งŒ์„ ๊ฐ€์ง„๋‹ค.
์ด๊ฑธ Door์— ๊ตฌํ˜„ํ•ด๋ณด๊ฒ ๋‹ค. image

image ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์† ์™ธ์—” ๋‹ฌ๋ผ์ง„๊ฒŒ ์—†๋‹ค.

์ด๊ฑธ ์“ธ๋•Œ๋Š” ์ด์ œ
try(AutoCloseable ์ดˆ๊ธฐํ™”์‹...)
{ ... }
catch(...) { ... }
์ด๋Ÿฐ์‹์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
์ € ์ดˆ๊ธฐํ™”์‹์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋“ค์€, try-catch ๊ตฌ๋ฌธ์ด ๋๋‚  ์‹œ์ ์— close๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. image

image ์ด๋ ‡๊ฒŒ ๋ง์ด๋‹ค.
์œ„์˜ try-catch-finally์‹๊ณผ ๋™์ž‘์€ ๊ฐ™์ง€๋งŒ, ์ฝ”๋“œ๊ฐ€ ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•ด์ง„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€ try ์ดˆ๊ธฐํ™”์‹์€ ;๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋„ฃ์„ ์ˆ˜๋„ ์žˆ๋‹ค.