๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Java28

28 Stream Java์—์„œ์˜ ์ŠคํŠธ๋ฆผ(Stream)์€ Java 8๋ถ€ํ„ฐ ๋„์ž…๋œ ๊ธฐ๋Šฅ์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ๊ฐ•๋ ฅํ•˜๊ณ  ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์ค‘์ ์„ ๋‘” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ์˜ API๋กœ์„œ, ์ปฌ๋ ‰์…˜(๋ฆฌ์ŠคํŠธ, ์„ธํŠธ, ๋งต ๋“ฑ)์ด๋‚˜ ๋ฐฐ์—ด ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ? ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ์†Œ์Šค(์ปฌ๋ ‰์…˜, ๋ฐฐ์—ด)๋ฅผ ํ‘œ์ค€ํ™”๋œ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ๊ฒƒ ์ŠคํŠธ๋ฆผ(Stream)์€ ์ค‘๊ฐ„ ์—ฐ์‚ฐ(Intermediate Operations)๊ณผ ์ตœ์ข… ์—ฐ์‚ฐ(Terminal Operations)์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๋Š”๋ฐ, ์ค‘๊ฐ„ ์—ฐ์‚ฐ์€ ์ŠคํŠธ๋ฆผ์„ ๋ณ€ํ™˜ํ•˜๊ฑฐ๋‚˜ ํ•„ํ„ฐ๋งํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์ตœ์ข… ์—ฐ์‚ฐ์€ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ŠคํŠธ๋ฆผ์„ ๋‹ซ๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค. ์ŠคํŠธ๋ฆผ ์ฃผ์š” ํŠน์ง• ๋‚ด๋ถ€ ๋ฐ˜๋ณต (I.. 2024. 1. 21.
27 Functional Interface (feat. Lambda) ์ž๋ฐ”์—์„œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์ฃผ๋กœ Java 8์—์„œ ์ถ”๊ฐ€๋œ ๋žŒ๋‹ค ํ‘œํ˜„์‹ ๋ฐ ์ŠคํŠธ๋ฆผ API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ตฌํ˜„๋ฉ๋‹ˆ๋‹ค. Java 8๋ถ€ํ„ฐ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…์ด ๋„์ž…๋˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๊ณ , ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋žŒ๋‹ค ํ‘œํ˜„์‹์€ ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ•˜๋‚˜์˜ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, ๋žŒ๋‹ค ํ‘œํ˜„์‹์œผ๋กœ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์˜ˆ์‹œ 1 ์ฝ”๋“œ ์˜ˆ์‹œ 2 ๋žŒ๋‹ค์‹์€ ๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„๊ณผ ๋ฐ˜ํ™˜ํƒ€์ž…์„ ์ œ๊ฑฐํ•˜๊ธฐ์— ์ต๋ช… ํ•จ์ˆ˜๋ผ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ์ •ํ™•ํ•˜๊ฒŒ๋Š” ์ต๋ช… ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ๊ธฐ์œ„ํ•œ ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•˜์ฃ ? ์œ„์— ๋žŒ๋‹ค์‹์ด ์—๋Ÿฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด์œ ๋Š” ๋žŒ.. 2024. 1. 21.
26 Thread ์Šค๋ ˆ๋“œ(Thread)๋Š” ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ์‹คํ–‰ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ๋ณ‘๋ ฌ ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ ์Šค๋ ˆ๋“œ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ฃผ์š” ํด๋ž˜์Šค๋Š” Thread ํด๋ž˜์Šค์™€ Runnable ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๊ฐ„๋‹จํ•œ ์Šค๋ ˆ๋“œ ๊ด€๋ จ ๊ฐœ๋…๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ ์ƒ์„ฑ๊ณผ ์‹คํ–‰ ์Šค๋ ˆ๋“œ ์šฐ์„ ์ˆœ์œ„ ์Šค๋ ˆ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ๊ฐ ์Šค๋ ˆ๋“œ๊ฐ€ ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•˜๊ฒŒ ๋‹ค๋ค„์ ธ์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ์˜ ์šฐ์„ ์ˆœ์œ„๋Š” ์ •์ˆ˜๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ๋‚ฎ์€ ๊ฐ’์ผ์ˆ˜๋ก ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” Thread ํด๋ž˜์Šค์˜ ์ƒ์ˆ˜๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฐ’๋“ค์ด ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Thread.MIN_PRIORITY (1): ๊ฐ€์žฅ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ Thread.NORM_PRIORITY (5): ๊ธฐ๋ณธ.. 2024. 1. 21.
25 Generics ์ œ๋„ค๋ฆญ์Šค(Generics)๋Š” ์ž๋ฐ”์—์„œ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ์˜ ํƒ€์ž… ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ œ๋„ค๋ฆญ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ฝ”๋“œ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ํƒ€์ž… ๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ์‚ฌ์ „์— ๊ฒ€์ถœํ•  ์ˆ˜ ์žˆ์–ด ์•ˆ์ •์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๋„ค๋ฆญ์Šค ๋„์ž… ์ด์œ  ์ œ๋„ค๋ฆญ์Šค๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์—์„œ๋Š” ์ปฌ๋ ‰์…˜๊ณผ ๊ด€๋ จ๋œ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํƒ€์ž… ์•ˆ์ •์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ œ๋„ค๋ฆญ์Šค๊ฐ€ ๋„์ž…๋˜๊ธฐ ์ „์—๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋“ค์ด Object๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋™์ž‘ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ํƒ€์ž…์˜ ๊ฐ์ฒด๋“  ์ €์žฅํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 1) ํƒ€์ž… ์•ˆ์ •์„ฑ์ด ๋–จ์–ด์ง 2) ํ˜•๋ณ€ํ™˜์‹œ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๋ฐœ์ƒ ์ œ๋„ค๋ฆญ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฌธ์ œ์ ๋“ค์„ ์‚ดํŽด๋ณด๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๋Š” ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…์„ ํ™•์ธํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ์ € ๋ชจ๋‘ O.. 2024. 1. 21.
24 Enum enum์€ ์ž๋ฐ”์—์„œ ์—ด๊ฑฐํ˜•(Enumeration)์„ ๋‚˜ํƒ€๋‚ด๋Š” ํ‚ค์›Œ๋“œ์ž…๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜•์€ ์„œ๋กœ ์—ฐ๊ด€๋œ ์ƒ์ˆ˜๋“ค์˜ ์ง‘ํ•ฉ์„ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋ฉฐ ํ•ด๋‹น ์ƒ์ˆ˜๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ  ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜•์€ ์ž๋ฐ” 5๋ถ€ํ„ฐ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ์™€ ์ฃผ์š” ํŠน์ง• ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ: ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋กœ ๊ด€๋ จ๋œ ์ƒ์ˆ˜๋“ค์„ ํ•œ ๊ณณ์— ๊ทธ๋ฃนํ™”ํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. ํƒ€์ž… ์•ˆ์ •์„ฑ: ์—ด๊ฑฐํ˜•์€ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. enum์œผ๋กœ ์ •์˜๋œ ์ƒ์ˆ˜ ์ด์™ธ์˜ ๊ฐ’์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ ํƒ€์ž„ ์ฒดํฌ: ์—ด๊ฑฐํ˜•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ ํƒ€์ž„์—์„œ ์œ ํšจํ•œ ๊ฐ’์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜• ๋ฉ”์„œ๋“œ: ์—ด๊ฑฐํ˜•์€ ๋ฉ”์„œ๋“œ์™€ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ด๊ฑฐํ˜•์˜ .. 2024. 1. 21.
23 Annotation ์ž๋ฐ”์˜ ์–ด๋…ธํ…Œ์ด์…˜(Annotation)์€ ์†Œ์Šค ์ฝ”๋“œ์— ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ์–ด๋…ธํ…Œ์ด์…˜์€ ์ฃผ๋กœ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ๋Ÿฐํƒ€์ž„ ์‹œ์— ํ”„๋กœ๊ทธ๋žจ์˜ ๋™์ž‘์„ ์ˆ˜์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์–ด๋…ธํ…Œ์ด์…˜์€ @ ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„๋˜๋ฉฐ, ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ? ์ž๋ฐ”์˜ ์–ด๋…ธํ…Œ์ด์…˜(Annotation)์—์„œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋Š” ์†Œ์Šค ์ฝ”๋“œ์— ๋ถ€๊ฐ€์ ์ธ ์ •๋ณด๋ฅผ ์ฒจ๋ถ€ํ•˜์—ฌ ์ปดํŒŒ์ผ๋Ÿฌ, ํ”„๋ ˆ์ž„์›Œํฌ, ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ ๋“ฑ์ด ํ•ด๋‹น ์ •๋ณด๋ฅผ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋…ธํ…Œ์ด์…˜์€ ์ฃผ๋กœ ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ํ•„๋“œ ๋“ฑ์˜ ์š”์†Œ์— ๋ถ€๊ฐ€ ์ •๋ณด๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. 1) @Override ์–ด๋…ธํ…Œ์ด์…˜: ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ํ•ด๋‹น ๋ฉ”์„œ๋“œ๊ฐ€ ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋“œํ•œ๋‹ค๋Š” ์ •๋ณด๋ฅผ ์ œ๊ณต 2) @Deprecated: ํ•ด๋‹น ์š”์†Œ(ํด๋ž˜์Šค, ๋ฉ”์„œ.. 2024. 1. 21.
22 throw & throws throw์™€ throws๋Š” ์ž๋ฐ”์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์™€ ๊ด€๋ จ๋œ ํ‚ค์›Œ๋“œ๋กœ, ์˜ˆ์™ธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์™ธ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ - throw ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํ™ฉ์„ ํ˜„์žฌ ์œ„์น˜์—์„œ ์ง์ ‘ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๊ฑฐ๋‚˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์— throw ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์™ธ๋ฅผ ๋˜์ง‘๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์˜ˆ์™ธ๋ฅผ ํ˜„์žฌ ์œ„์น˜์—์„œ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์˜ˆ์™ธ๋Š” ํ˜ธ์ถœ ์Šคํƒ์„ ๋”ฐ๋ผ ์ƒ์œ„ ํ˜ธ์ถœ์ž๋กœ ์ „ํŒŒ๋ฉ๋‹ˆ๋‹ค. ๋”๋ณด๊ธฐ try { Exception e = new Exception("๊ณ ์˜๋กœ ๋ฐœ์ƒ์‹œํ‚ด"); // ์˜ˆ์™ธ ํด๋ž˜์Šค ์ƒ์„ฑ throw e; // ์˜ˆ์™ธ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ // throw new Exception("๊ณ ์˜๋กœ ๋ฐœ์ƒ์‹œํ‚ด"); ์œ„์˜ ๋‘ ์ค„์„ ํ•œ ์ค„๋กœ } catch (Exception e) { System.out.println("์—๋Ÿฌ ๋ฉ”์„ธ์ง€ : " +.. 2024. 1. 21.
21 Exception handling ์˜ˆ์™ธ ์ฒ˜๋ฆฌ(Exception Handling)๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์˜ˆ์™ธ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์€ ์˜ˆ์™ธ ์ƒํ™ฉ์— ๋Œ€ํ•œ ๋Œ€์ฒ˜ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๊ณ , ์ •์ƒ์ ์ธ ํ๋ฆ„์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰, ํ”„๋กœ๊ทธ๋žจ์˜ ๋น„์ •์ƒ์ ์ธ ์ข…๋ฃŒ๋ฅผ ๋ง‰๋Š” ๊ฒƒ์— ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ๋ชฉ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” try, catch, finally ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜์—ฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. 1) try block → try ๋ธ”๋ก์€ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ๋ธ”๋ก์ž…๋‹ˆ๋‹ค. try ๋ธ”๋ก ์•ˆ์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ•ด๋‹น ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” catch ๋ธ”๋ก์œผ๋กœ ์ œ์–ด๊ฐ€ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. 2) catch block → catch ๋ธ”๋ก์€ ํŠน์ • ์˜ˆ์™ธ ํƒ€์ž…์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ catch .. 2024. 1. 21.
20 Exceptions ์ž๋ฐ”(Java)์—์„œ ์˜ˆ์™ธ(Exception)๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ์ƒํ™ฉ ๋˜๋Š” ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ •์ƒ์ ์ธ ํ๋ฆ„์„ ๋ฐฉํ•ดํ•˜๊ฑฐ๋‚˜ ํ”„๋กœ๊ทธ๋žจ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋Š” ์›์ธ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์™ธ (Exception) ์˜ˆ์™ธ๋Š” ์ฃผ๋กœ ํ”„๋กœ๊ทธ๋žจ์˜ ์™ธ๋ถ€ ์ƒํ™ฉ์ด๋‚˜ ์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ์˜ํ•ด ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ์™ธ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ ์ฝ”๋“œ์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ์ด๋ฉฐ, ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ ์˜ˆ์™ธ๋ฅผ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•˜์—ฌ ๊ณ„์† ์‹คํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ try-catch ๋ธ”๋ก์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Checked ์˜ˆ์™ธ์™€ Unchecked ์˜ˆ์™ธ(๋Ÿฐํƒ€์ž„ ์˜ˆ์™ธ)๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. 1) .. 2024. 1. 21.