์์ธ ์ฒ๋ฆฌ๋ฅผ ์ ๋๋ก ํ์ง ๋ชปํ๋ ์ด์ ๋ ๋ฌด์์ผ๊น?
์์ธ ์ฒ๋ฆฌ๋ฅผ ์ ๋๋ก ํ์ง ๋ชปํ๋ ์ด์
- ๊ณผ๊ฑฐ์ ์ฃผ๋ฅ์ด๋ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ง์์ ์ผ๋ก ์๋์ด ๋ณด์ฅ๋์ด์ผ ํ๋ ํ๋ก๊ทธ๋จ์ ๋ํด โํ๋์จ์ด๊ฐ ๋ฉ์ถ๋ ํฌ๋์โ๊ฐ ๋ฌด์์์ ๊ทธ๋ฌ์ ์ ์๋ค.
- ์์ฆ์ ๊ฒฝ์ฐ ์ด์์ฒด์ ๊ฐ ํด์ฃผ๋ ์์ ์ ๋นํด ์ค์ต์ด ์ค์ด๋ค์๋ค.
- ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์ฆ์ ์์ธ๋ฅผ ๋ ์ฌ์ฉํ๋ ๊ฒ์ด ํ๋ก๊ทธ๋๋จธ, ์ ํ ํ์ง์ ๋ ๋์์ด ๋ ์ ์๋ค.
์์ ์ ์ฃผ์ฅ๋ค
- ํจ์์์
null
์ด๋int
๋ฐํํด์ ์ค๋ฅ ์ํฉ์ ์๋ ค์ฃผ๋ ๊ฒ์ ๊ธ์ง์ผ! - ํจ์์์ ๋ฐํ๊ฐ์ ์ค์ ๊ฐ๋ง ๋ฐํํด์ผํด. Bool๋ ์๋ผ
- ์คํจ์ผ? ๋ฌด์กฐ๊ฑด ์๋ฌ ๋์ ธ
- ๋ฐ๋์ชฝ์ ์์ธ๋ก ์ฒ๋ฆฌํด.
ํ์ง๋ง..
- ๋๋ฌด ์ข์๋ฐ
- ์ฌ๋์ด ์ดํดํ๊ธฐ ์ด๋ ค์ํจ
- ์ ๋๋ก ํ ์ฌ๋์ด ๋๋ฌผ์๋ค.
ํจ์๊ฐ ๋์ด์ ๋ธ๋๋ฐ์ค๊ฐ ์๋๊ฒ ๋๋ค.
- ๊ทธ๊ฒ ์ด๋ ค์ ๋ ์ด์ ๋, ์์ธ๋ฅผ ๋ฐ๋์ชฝ์์ ์ด๋์ ์จ์ง ํ์ ํ๊ธฐ๊ฐ ์ด๋ ต๋ค.
- ์์์์ ๋ฐ๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์, ์๋ ค๋ฉด ๋ชจ๋ ํจ์๋ฅผ ๋ค ๊น๋ด์ผ ํ๋ค.
- ์ฆ, ํจ์๊ฐ ์ด๋ป๊ฒ ๋๋์ง ๋ชฐ๋ผ๋ ๋๋ค๋ ๊ท์น์ ์ด๊ฒผ๋ค.
- ์กฐ๊ธ๋ง ์์คํ ์ด ๋ณต์กํด์ง๋ฉด, ์ด๋์ ๋ถ๋ฆฌ๋์ง ์ง์ง ๋ชจ๋ฅธ๋ค..
- ์ฌ์ค ํธ์ถํ๋์ชฝ์์ ๋ค๋ฅธ ๊ฐ์ฒด์์ ๋ด๋ฑ์ ์๋ฌ๋ฅผ ๋ฐท๋๋ค๋๊ฒ ์บก์ํ์๋ ์ด๊ธ๋๋ค.
- ์ด๋ฐ ๊ฒ ๋๋ฌธ์ ์ฃผ์๋ ๋ฌ์๋ดค๋๋ฐ, ์ฌ๋๋ค์ด ์ฃผ์์ ์ ์์ฝ์ ใ ใ
์๋ฐ๋ ๋๋น๋์ด ์์์
- ์ด๋ ๊ฒ ์ด๋์ ์๋ฌ๊ฐ ๋์ค๋ ์ํฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด Java๋ ์์ธ๋ฅผ ๋์ข
๋ฅ๋ก ๋๋
- unchecked: ๋ค๋ฅธ ์ธ์ด์ ๋์ผ
ArithmeticException
BufferOverflowException
ClassCastException
- checked: Java์๋ง ์๋ ์์ธ
IOException
SQLException
TimeoutException
- unchecked: ๋ค๋ฅธ ์ธ์ด์ ๋์ผ
Unchecked
- ์ด๋์ ์ด๋ค ์์ธ๊ฐ ๋๋์ง ํ๋์ ์๋ณด์ธ๋ค.
RuntimeException
์ ์์- ์ด์ ๊ธ์์ ๋ณด์๋
UserNotFoundException
์ด ์ด๋ฅผ ์์ํด์ ๋ง๋ ์ปค์คํ ์๋ฌ์์ - ์ผ๋ฐ์ ์ธ ๋ค๋ฅธ ์ธ์ด์์์ ์์ธ์ ๊ฐ์
- ์ด์ ๊ธ์์ ๋ณด์๋
- ์ปดํ์ผ๋ฌ๊ฐ ๋ฐ๋ก ๊ฒ์ฌ๋ฅผ ์ ํด์ค์ unchecked ์์ธ๋ผ ๋ถ๋ฆ
Checked
- ์ปดํ์ผ๋ฌ๊ฐ ์์ธ ์ฒ๋ฆฌ๋ฅผ ์ ๋๋ก ํ๋์ง ํ์ธํด์ค
- ์ด๋ ๋ฉ์๋๊ฐ ์ด๋ค ์์ธ๋ฅผ ๋์ง๋์ง ๋ช ํํ ์ ์ ์๋ค.
- ์์ธ๊ฐ ๋ฐ์ํ๋ ์ฝ๋์์ ๋์ค ํ๋๋ฅผ ์ํ๋ฉด โ์ปดํ์ผโ ์ค๋ฅ๋ฅผ ์ค๋ค.
- ๋ฐ์ํ ์์ธ๋ฅผ ๊ทธ ๋ฉ์๋ ์์์ ์ฒ๋ฆฌํด์ผ ํจ (
catch
๋ฌธ ์์์) - ์ฒ๋ฆฌ๋ฅผ ์ํ๋ค๋ฉด, ๊ทธ ์ฌ์ค์ ๋ฉ์๋ ์๊ทธ๋ด์ฒ ์์ ํ๊ธฐ
- ํด๋น ํ์๊ฐ ๋์ด ์๊ธฐ ๋๋ฌธ์ ํ๊ธฐ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ๊ฒฝ์ฐ ํธ์ถ์๊ฐ 1, 2๋ฅผ ๋๋ค์ ํด์ค์ผํจ
- ๋ฐ์ํ ์์ธ๋ฅผ ๊ทธ ๋ฉ์๋ ์์์ ์ฒ๋ฆฌํด์ผ ํจ (
์์
Exception
์ ์์ ๋ฐ๊ธฐ ๋๋ฌธ์ checked Exception์ด๋ค.
- ์์ ๊ฐ์ด ์๋ฌ๋ฅผ ์ ์ํ ์ํ์์ ์๋ฌ๋ฅผ ๋์ง๋ คํ๋ฉด, ๊ธฐ์กด๊ณผ ๊ฐ์ ๋ฌธ๋ฒ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค.
- ๋ช ์์ ์ผ๋ก ์ด๋ค ์๋ฌ๋ฅผ ๋์ง๋์ง ํ๊ธฐํด์ผ ํ๋ค.
- ์ด์ ์๋ ๊ทธ๋ฅ ํธ์ถํ ์ ์์๋๋ฐ (
findUser
) - ์ด์ ๋
try-catch
๋ฅผ ๋ฐ๋์ ํด์ค์ผ ํ๋ค. - ๋ง์ฝ์
findUser
์์throws UserNotFoundException
์ ์์ ์ด์คฌ๋ค๋ฉด?- ์ผ๋จ ์ปดํ์ผ ์ค๋ฅ๋๋ค.
- ์์์์ ์ฒ๋ฆฌํด์ฃผ๋ ๋ฌธ์ด ๋ค์ด๊ฐ์ผ ํ๋ค.
- ์๋ฃ์ผ๋ฉด ์ปดํ์ผ ์ค๋ฅ~
๋์ ๊ตฌ๋ถ๋ฒ
- ๊ธฐ๋ณธ์ ์ผ๋ก Exception์ Checked Exception์ด๋ค.
- UnChecked Exception์ด ํน์ด ์ผ์ด์ค๋ผ๊ณ ์๊ฐํ๋ ๊ฒ์ด ์ข๋ค.
Checked Exception์ ์กด์ฌ์์
- ์์ ์๋ Checked๋ฅผ ์ข์ํ๋ค. ์๋๋ ์ข์์ผ๋ ์คํจํ์ง๋ง.
- API ์ ์์ ์ ์ฅ์์๋ ํด๋น ์๋ฌ๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์์ผ๋ก์จ ์ฒ๋ฆฌํด์ผ ํ ์์ธ์์ ์๋ ค์ค๋ค.
- ๊ทธ๋ฐ๋ฐ โ์ฒ๋ฆฌํ๋ผโ๋ ์๋ฏธ๊ฐ ๋ญ๊น?
ํ๋ก๊ทธ๋จ์ ๊ทธ๋ฅ ์ข ๋ฃํด๋ผ?
- ๊ฐ์ฅ ์์์ JVM๊น์ง ๋ณด๋ด์ ๋๋ด๋ผ
- ๋ง์ฝ ๊ทธ๋ ๋ค๋ฉด ์ค์ ๋ก ๊ทธ ์์ธ๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ๋ ํจ์์๋ ํ๋ฐฉ์์ ๋ณด๋ด๋ ๋ชจ๋ ์์ธ ํด๋์ค๋ฅผ
throws ์์ธ1, ์์ธ2...
์ ์ด์ฃผ์ด์ผ ํ๋ค.
- ๋ง์ฝ์ ์ฌ๊ธฐ์ A๊น์ง ์ฌ๋ผ๊ฐ๋ค๋ฉด..?
- ํธ๋ฆฌ์ ๊น์ด๊ฐ 4๋ก ์ฆ๊ฐํ๋ค๋ฉด..?
์์ธ๋ฅผ ๋ฌด์ํ๊ณ ์งํํด๋ผ
- ์์ธ๊ฐ ๋์ฌ ์๋ ์๋๋ฐ, ๋ฌด์ํ๋ ด
- ๊ฟ๊บฝ ์ผํจ๋ค (swallow)
- ๋ก๊ทธ ์ถ๋ ฅ์ ๋?
- ์๋ ๊ทธ๋ผ ์ ์์ธ๋ฅผ ๋ ๋ ค
ํ๋ก๊ทธ๋จ์ ์ ์ ์ํ๋ก ํ๋ณต์์ผ์ ๋์์์ผ๋ผ
- ์์ธ๋ฅผ ๋์ง๋๋ฐ, ์ฒ๋ฆฌ์ํ๋ฉด ์ปดํ์ผ ์ค๋ฅ๊น์ง ๋ด๋ ๋ฐฉ์์ผ๋ก ์๋ฌ๋ฅผ ๋์ก๋ค๋ฉด
- ๋น์ฐํ ํ๋ก๊ทธ๋จ์ด ๋์ํ๋๋ก ํ๋ผ๋ ์๋ฏธ์ผ ๊ฒ
- ๊ตณ์ด
checked
๋ก ๋ง๋ค์๋ค๋ฉด, ํ๋ณต์ํค๋ผ๋ ์๋ฏธ๋ค. - ์ด๋ฐ ์๋ฏธ๋ฅผ ๋ดํฌํ๋ ๊ฒ์ด ๊ณผ๊ฑฐ Java์์ ์ ํธํ๋ ๋ฐฉ์์ด๋ค.
- ๊ทธ๋์
Exception
ํด๋์ค๊ฐ ๊ธฐ๋ณธ์ ์ผ๋กchecked
์์
- ๊ทธ๋์
ํ๋ณต์ด๋?
- ํ ๊ทธ๋ฐ๋ฐ ํ๋ณต์ด๋ผ๋ ๊ฒ์ ๋ญ๊น?
- ์์ธ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ํ๋ก ๋๋ ค๋ฌ๋ผ๋ ์๋ฏธ์ผ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
- ์ด๊ฒ ๊ฐ๋ฅํ ๊น? ๋ชจ๋ ์ํ๋ฅผ ๊ธฐ์ตํ๊ณ ์์ด์ผ ํ๋ค.
- ์ฆ, ๋จ๋ฐฉํฅ ์ฐ์ฐ์ ํ๋ฅ ์ด ๋ ๋๋ค. ์ญ์ฐ์ ์ด๋ ต๋ค.
- ์ง์ง ์ด๋ ต๊ณ ์ด๋ฐ๊ณ ํ๋ค๋ค ์ด๊ฑฐ. ๋ชจ๋ ์ฝ๋์์ ๊ทธ๋ ๊ฒ ํ๊ฒ ๋ค? ๋ถ๊ฐ๋ฅ.
์์ธ๋ก๋ถํฐ ์์ ํ ํ๋ก๊ทธ๋๋ฐ
- ํด๋์ค ๋ช๊ฐ๋ง ์๋ ๊ฐ๋จํ ๊ตฌ์กฐ๋ ๊ฐ๋ฅ
- ๋ณต์กํ ์๋ก ์ด๋ ค์์ง๋ค.
- ์์ ์ด๊ฑธ ์๋ํ์ง ๋ง๋ผ๋ ๋ง์ ์๋๋ค.
- ์ฌ์ ํ ํ์ํ ๊ณณ์ด ์ผ๋ถ ์๋ค.
- ๋ชจ๋ ๊ณณ์์ ์ด๋ด ์๋ ์๋ค๋ ๊ฒ..
๊ทผ๋์ ์์ธ ์ฒ๋ฆฌ ํธ๋ ๋
- ๊ทธ๋ฅ unchecked ์์ธ๋ฅผ ์ฐ์
- ์ฌ์ง์ด checked๋ฅผ unchecked๋ก ๊ฐ์ฌ์ ๋ค์ ๋์ง์๋ ์๊ฒฌ๋ ์์
- ํ์ง๋ง ์ด๋ ๊ฒ ํ๋ฉด ๋๊ฐ ์ด๋ค ์์ธ๋ฅผ ๋์ง๋์ง๋ ํ๋์ ์๋ณด์ธ๋ค. (์ฌ์ ํ)
- ์์ธ๋ก๋ถํฐ ์์ ํ ์ต์ ์ ๋ฐฉ๋ฒ์ ์ฌ๋ถํ
- ์ฆ, ์์ธ ๋ฐ์ ์ด๋ฒคํธ๋ก๋ถํฐ ์์คํ ์ ํ๋ณตํ์ง ์๋๋ค.
- ๋๋ฒ๊น ์ ํ์ํ ์ ๋ณด๋ฅผ ์ต๋ํ ๋จ๊ธฐ๊ณ ํ๋ก๊ทธ๋จ์ ์ข ๋ฃ์ํด
์์ธ๋ฅผ ์ด๋๊น์ง ์ธ๋ถํํด์ผ ํ๋๊ฐ?
- ์์ ์ ์ ํธํ๋ ๋ฐฉํฅ
- ์์ธ๋ฅผ ์ข ๋ฅ๋ณ๋ก catchํ๋ค.
- ์์ธ ํ์ ๋ง๋ค ์ฒ๋ฆฌ๋ฅผ ๋ค๋ฅด๊ฒ ํด์ฃผ์์ด์ผ ํ์
- ์ฃผ๋ก checked ์์ธ๋ฅผ ์ฌ์ฉ
- ์ฆ, ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ๊ทธ์ ๋ง๋ ์์ธ ํด๋์ค๋ฅผ ๋ง๋ค์์์
- ์์ฆ์ ์ข ๋ ์ ํธํ๋ ๋ฐฉํฅ
- ๋ชจ๋ ์์ธ๋ฅผ โํ๋ฒ์โ ์ฒ๋ฆฌํ์.
- ์ฃผ๋ก
main()
์์ ํ๋ฒ๋ง! - ๋ฐ๋ผ์ ๋ค์ ์์ธ๋ฅผ ๋์ง๋ ์ผ๋ ํจ์ฌ ์ ์ด์ง๋ค.
- ์ฌ์ ํ ๋์ง ๋๋ ์ธ์ธํ ์์ธ ํ์ ์ ๋์ง๋ค.
- ๋ค๋ง
catch
๋ฅผ Exception์ผ๋ก ํ๋ฒ์ ์ฒ๋ฆฌํ ๋ฟ์ด๋ค.
์กฐ์ฌํ ๋ด์ฉ๋ค
- ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ํ๋ก๊ทธ๋จ์ ๋ชจ๋ ์์ธ๋ก๋ถํฐ ํ๋ณตํด์ผ ํ๋ค.
- ํ๋ก๊ทธ๋จ์ ์ข
๋ฃ์์ผ๋ ๋๋ ์ ์ผํ ๊ฒฝ์ฐ๋ ํ๋ก๊ทธ๋จ์ ์์ํ ๋ ๋ฟ์ด๋ค.
- ์ฌ๋์ด ๋ณด๊ณ ์์ผ๋๊น..?
- ๋๊ตฐ๊ฐ๋ ์ฌ๋ถํ ์ ํด์ค์ผํ๋ ์์ ์ ๊ธ์์ ์ ์ ์๋ค.
- checked ์์ธ๋ฅผ ์ ํธํ๋ ์์ ์ ๋ง์
- ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ ์กฐ์ธ์ด๋ค. ํน์ํ ๊ฒฝ์ฐ์๋ง ์ ์ฉ๋๋ค.
- ์ด๋ฐ ์กฐ์ธ์ ์น์๋ฒ์ ๊ฐ์ด ํญ์ ๊ตฌ๋๋์ผ ํจ์๋ ์๋ฌ๊ฐ ๋ ์ ํ๋ก๊ทธ๋จ์ด ์ฃฝ์ด๋ฒ๋ฆฌ๋ ๊ทธ ๊ณตํฌ๋ฅผ ๋ชธ์ด ๊ธฐ์ตํ๊ธฐ ๋๋ฌธ์ด์ง ์์๊น?
์ง๊ฒจ๋ณด๋ ์ฌํจ์์ด ์๋ํด์ผ ํ๋ค๋ฉด?
- ์น์๋ฒ ๊ฐ์ ์
- ๊ทผ๋์ OS๋ ํ๋์จ์ด ์ฌ๋ถํ
์ด ํ์์๋ค.
- ํ๋ก๊ทธ๋จ๋ง๋ค ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ ๊ณต
- ํ๋ก๊ทธ๋จ ํฌ๋์ ๋ฌ๋ค๊ณ ๊ธฐ๊ณ๊ฐ ํฌ๋์ ๋๋ ๊ฒ ์๋
- ํ๋ก๊ทธ๋จ ์ฌ์คํ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ์ด ๋ด๋น
- ์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด ํฌ๋์๊ฐ ๋์ ์ฌ๋ผ์ง๋ฉด ๋ค์ ์คํํ๋๋ก ์ค์ ๊ฐ๋ฅ
- ์ฌ์์์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ฐฐ์ ๋ฐ์ ํ๋ก๊ทธ๋จ์ด๋ ๊นจ๋ํ๊ฒ ์์
- ์ด๊ฑธ ๋ฌด์ํ๊ณ ์์ธ๋ก๋ถํฐ ์์ ํ ํ๋ก๊ทธ๋๋ฐ์ ์๋ํ๋ค๊ฐ ์คํจํ๋ค๋ฉด?
- ํ๋ก๊ทธ๋จ์ด ์คํ๋ ค ๋ ์ด์ํ ์ํ์ ๋น ์ ธ ๋ ํฐ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์
- ์ด๋ฐ ์ํ์ ํ๋ก๊ทธ๋จ์ โ์ข๋น ํ๋ก๊ทธ๋จโ์ด๋ผ๊ณ ํจ
์ ์ด ํ๋ฆ์ฉ์ผ๋ก ์์ธ๋ฅผ ์ฌ์ฉํ์ง ๋ง ๊ฒ
goto
๋ ๊ฐ๋ ์ด ๊ฐ์- ํจ์ ๋ฒ์์์ ์ ํํ๋ ๊ฒ์ด ์๋๊ณ ํธ์ถ ์คํ ์ด๋๋ก๋ ์ ํ ๊ฐ๋ฅ
goto
๋ณด๋ค ๋ ๊ธฐ๊ฐ๋งํ hack- ์ ๋ ์ ๋ ๋ค์์ ์คํํ ์ฝ๋๋ฅผ ๊ฒฐ์ ํ๋ ์ฉ๋๋ก ์ฌ์ฉํ์ง ๋ง ๊ฒ
๋์ ์
- ์ฌ๊ทํจ์ ํ๋ฐฉ์ ๋น ์ ธ๋์ค๊ธฐ
- return์ด void์
- ์๋ฌ๋ก ๊ฒฐ๊ณผ๊ฐ์ catchํด์ผ ํจ
- ๋ฐํ์ ์ผ์ผํ ์ํ๊ณ hack์ผ๋ก ๋์ง๋ ๊ฒ์
์์ธ์ ์ธ ์ํฉ์๋ง ์์ธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ์ด์
- 1์ด๋ง๋ค ์์ธ๋ฅผ 5๊ฐ์ฉ ๋์ง๋ ํ๋ก๊ทธ๋จ์ ์๊ฐํด๋ณด์.
- ๋๋ฒ๊น ์ด ํ๋ค์ด์ Exception์ ์ฒดํฌํ๋ ๊ธฐ๋ฅ์ ๋๋ฒ๊ฑฐ์ ์ถ๊ฐํด์ ๋๋ ธ์ด
- ์ด์ ๋๋ฆฌ๊ณ ๊ธฐ๋ค๋ฆฌ๋ฉด ์ด๋์ ์์ธ ๋ฐ์ํ๋์ง ์ ์ ์๊ฒ ์ง?
- ๊ทผ๋ฐ ํ๋ก๊ทธ๋จ ์คํํ ๋ ์์ธ๊ฐ 200๊ฐ๊ฐ ๋์จ๋ค.
- if๋ฌธ ๋์ ์์ธ๋ก ๋ก์ง์ ๊ฑธ์ด์ ๊ณ์ ๊ฑธ๋ฆฌ๋๊ฑฐ์ผ.
- ์ด๋ฆ ๋ง๋๋ก ์ฌ์ฉ์ํ๋ฉด ๋ชจ๋๊ฐ ๋์ํ๋ ๊ฐ๋ ์์ ๋ฒ์ด๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ๋๊ตฌ ์ฌ์ฉ์๋ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค.
- ๋น์ทํ ๊ฑธ๋ก ์ปดํ์ผ ๊ฒฝ๊ณ ๋ ํญ์ ๊ณ ์น๋ ด