์ถ์ฒ: JavaTechOnline ์ด ํํ ๋ฆฌ์ผ์ Java์์ ์ผ๋ฐ์ ์ธ ์์ธ๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค. ์ด๋ก ์ธ์๋ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ฝ๋ ์์ ๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก Java ๊ฐ๋ฐ์๋ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ค๋ฅ๋ ์์ธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์์ธ๊ฐ ๋ฐ์ํ๋ฉด ์์
์๊ฐ์ด ๊ฑธ๋ฆฌ๋ฏ๋ก ์์ธ๋ฅผ ์ฌ๊ฐํ๊ฒ ๋ฐ์๋ค์ฌ์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฝ๊ฐ์ ์ง์๋ง ์์ผ๋ฉด ์ด๋ฌํ ๋ฌธ์ ๋๋ถ๋ถ์ ํด๊ฒฐ ์๋๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ๊ทธ๋ผ, Java์์ ์ผ๋ฐ์ ์ธ ์์ธ๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์ ์์๋ด
์๋ค.
Java์์ ์์ธ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ์ผ๋ฐ ์ง์นจ
Java์์ ์์ธ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ ค๋ฉด ์ฝ๋ฉ ์ง์นจ์ ์ดํดํ๊ณ ๋ฐ๋ฅด๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.- ์ฝ๋์์ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ฌ์ฉํ๊ธฐ ์ ์ ํญ์ ์ฌ์ฉ์ ์ ๋ ฅ์ ์ ํจ์ฑ์ ๊ฒ์ฌํ์ญ์์ค.
- ํน์ ์๋๋ฆฌ์ค์ ์ ํฉํ ๊ฒ์ ๋ฐ๋ผ try-catch , throws , throw block ์ ์ฌ์ฉํ์ญ์์ค .
- ์ฒ๋ฆฌ ๋ฐ ์ค๋ฅ์ ๋ํ ์ฝ๋์ ๋ฉ์์ง๋ฅผ ๋ฌด์ํ์ง ๋ง์ญ์์ค. ์ด๋ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ๋๋ฒ๊น ๋ชฉ์ ์ผ๋ก ์์ธ๋ฅผ ๊ธฐ๋กํด์ผ ํฉ๋๋ค. ๋ก๊ฑฐ ๋ฉ์์ง๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ์๋ณํ ์ ์์ต๋๋ค.
- ์์ธ๋ฅผ ๋ฐฉ์งํ๊ณ ์ฝ๋๋ฅผ ์ฒ ์ ํ๊ฒ ํ ์คํธํ๋ ค๋ฉด ์ฝ๋ฉ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ธ์.
- ๊ฐ์ฅ ์์ ์ ์ธ ์ต์ ๋ฒ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด API ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ์ธ์.
- ์์ธ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ํ์ํ ๋๊ตฌ์ ํ ์คํธ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ฝ๋์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์๋ณํ์ธ์.
- ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ๋ก๊ทธ๋ฅผ ๋ชจ๋ํฐ๋งํ์ฌ ๋ฌธ์ ๋ฅผ ์ ์ํ๊ฒ ์๋ณํ๊ณ ํด๊ฒฐํ์ธ์.
- ์ฝ๋๊ฐ ์์ ํ๊ณ ์ ์ฌ์ ์ธ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธ๋๋๋ก ๋ณด์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ต์ ์ํ๋ก ์ ์งํ์ธ์.
- ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๋ ์ฝ๊ฒ ์ดํดํ๊ณ ์ ์ง ๊ด๋ฆฌํ ์ ์๋๋ก ์ฝ๋์ ํด๋น ์์ธ๋ฅผ ์ฒ ์ ํ๊ฒ ๋ฌธ์ํํ์ธ์.
Java์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์์ธ ๋ชฉ๋ก
Java์๋ ์๋นํ ๊ธด ์์ธ ๋ชฉ๋ก์ด ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ช ๊ฐ์ง๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.NullPointer์์ธ
NullPointerException์ RuntimeException ์์ธ ์ ํ ์ ํ์ ๋๋ค . null ๊ฐ์ด ์๋ ์ฐธ์กฐ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด๋ ๊ฐ์ด null ์ธ ๊ฐ์ฒด๋ ๋ณ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค๋ ์๋ฏธ์ ๋๋ค . ์ด๋ฌํ ์ค๋ฅ๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๊ณ ํ๊ฑฐ๋ ์ด๊ธฐํ๋์ง ์์ ๊ฐ์ฒด์ ํ๋์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ๋๋ ์ด๋ฅผ ์ฒ๋ฆฌํ์ง ์๋ ๋ฉ์๋์ null์ ๋งค๊ฐ ๋ณ์๋ก ์ ๋ฌํ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค. NullPointerException์ด ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด == ์ฐ์ฐ์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐธ์กฐ ๋ณ์๊ฐ null์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค . ์ด ๊ฒฝ์ฐ null ์ฌ๋ก๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๋๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋ณ์๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ด๊ธฐํํ์ฌ null ์ฐธ์กฐ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ ์ ์์ต๋๋ค. NullPointerException์ ๋ฐฉ์งํ๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ Optional ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค . Java์์ Optional์ null์ด ์๋ ๊ฐ์ ํฌํจํ๊ฑฐ๋ ํฌํจํ์ง ์์ ์ ์๋ ์ปจํ ์ด๋ ๊ฐ์ฒด์ ๋๋ค. null ๊ฐ์ด ๊ฐ์ ๋ถ์ฌ๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ๊ฐ์ ์ ๋ฌด๋ฅผ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ํ๋ก๊ทธ๋๋จธ๊ฐ Optional ๊ฐ์ฒด ์ ๋น ๊ฐ์ ์ก์ธ์คํ๋ ค๊ณ ํ๋ฉด ํ๋ก๊ทธ๋จ์ NullPointerException์ ๋ฐ์์ํค์ง ์๊ณ ๋์ ๋น Optional ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค . ์ฆ, Optional์ ํ๋ก๊ทธ๋๋จธ๊ฐ ๊ฐ์ด ๋๋ฝ๋ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ก ๊ฐ์ ํ์ฌ NullPointerException์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค .IndexOutOfBoundsException
IndexOutOfBoundsException์ ๋ฐฐ์ด ๋๋ ์ปฌ๋ ์ ์ ์ก์ธ์คํ๋ ๋ฐ ์ฌ์ฉ๋ ์ธ๋ฑ์ค๊ฐ ์์์ด๊ฑฐ๋ ๋ฐฐ์ด ๋๋ ์ปฌ๋ ์ ์ ํฌ๊ธฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๋ ๋ฐ์ํ๋ ๋ฐํ์ ์์ธ์ ๋๋ค. ์ด ์์ธ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ํ๋ ค๋ฉด ๋ฐฐ์ด์ด๋ ์ปฌ๋ ์ ์ ์ก์ธ์คํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ธ๋ฑ์ค๊ฐ ํด๋น ๋ฒ์ ๋ด์ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ฆ, ์ธ๋ฑ์ค๋ 0๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ ๋ฐฐ์ด์ด๋ ์ปฌ๋ ์ ์ ํฌ๊ธฐ๋ณด๋ค ์์์ผ ํฉ๋๋ค.ArrayIndexOutOfBoundsException
ArrayIndexOutOfBoundsException ์ ์ ํจํ์ง ์์ ์ธ๋ฑ์ค์ ๋ฐฐ์ด์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ IndexOutOfBoundsException ์ ํ์ ๋๋ค . Java์์ ๋ฐฐ์ด ์ธ๋ฑ์ค๋ 0 ์์ ์์ ํ๊ณ length()-1 ์์ ๋๋ฉ๋๋ค . ์ฌ๊ธฐ์ length() ๋ ๋ฐฐ์ด์ ์์ ์์ ๋๋ค. ์ด ๋ฒ์ ๋ฐ์ ์ธ๋ฑ์ค์ ์๋ ์์์ ์ก์ธ์คํ๋ ค๊ณ ํ๋ฉด Java๋ ArrayIndexOutOfBoundsException ์ ๋ฐ์ ์ํต๋๋ค . ArrayIndexOutOfBoundsException ์ด ๋ฐ์ํ๋ฉด ์ฝ๋๋ฅผ ๊ฒํ ํ์ฌ ๋ฐฐ์ด์ ์์์ ์ก์ธ์คํ ๋ ์ฌ๋ฐ๋ฅธ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.StringIndexOutOfBoundsException
StringIndexOutOfBoundsException์ ์๋ชป๋ ์ธ๋ฑ์ค๊ฐ ์๋ ๋ฌธ์์ด์ ๋ฌธ์์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ IndexOutOfBoundsException ์ ํ ์ ๋๋ค . ์ด์ ArrayIndexOutOfBoundsException ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก Java์์ ๋ฌธ์์ด์ ์ธ๋ฑ์ค๋ 0 ์์ ์์ํ๊ณ length()-1 ์์ ๋๋ฉ๋๋ค . ์ฌ๊ธฐ์ length() ๋ ๋ฌธ์์ด์ ๋ฌธ์ ์์ ๋๋ค. ์ด ๋ฒ์ ๋ฐ์ ์ธ๋ฑ์ค์ ์๋ ๋ฌธ์์ ์ก์ธ์คํ๋ ค๊ณ ํ๋ฉด StringIndexOutOfBoundsException ์ด ๋ฐ์ํ ์ ์์ต๋๋ค . StringIndexOutOfBoundsException์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ๊ฒํ ํ์ฌ ๋ฌธ์์ด์ ๋ฌธ์์ ์ก์ธ์คํ ๋ ์ฌ๋ฐ๋ฅธ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.ํด๋์ค์บ์คํธ์์ธ
์ด ์์ธ๋ ์ค์ ์ ํ๊ณผ ํธํ๋์ง ์๋ ์ ํ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์บ์คํ ํ๋ ค๊ณ ํ ๋ ๋ฐ์ํฉ๋๋ค. ์ด์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด Java ํ๋ก๊ทธ๋จ์ด ๊ฐ์ฒด๊ฐ ์ธ์คํด์ค์ธ ํด๋์ค์๋ง ๊ฐ์ฒด๋ฅผ โโ์บ์คํ ํ๋ ค๊ณ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์บ์คํธ๋ฅผ ์ ์ฉํ๊ธฐ ์ ์ instanceof ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ์ ํ์ ํ์ธํ ์ ์์ต๋๋ค .IllegalArgumentException
IllegalArgumentException์ ๋ฉ์๋๊ฐ ๋ถ๋ฒ์ ์ด๊ฑฐ๋ ๋ถ์ ์ ํ ์ธ์๋ก ํธ์ถ๋ ๋ ๋ฐ์ํ๋ RuntimeException ์ ํ์ ๋๋ค . ์ฆ, ์ด ์ค๋ฅ๋ ์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ ์์ ํ์์ด๋ ๊ตฌ์กฐ๊ฐ ์๋ ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฉ์๋์ ์ธ์๋ก ์์๊ฐ ํ์ํ๊ณ ์์๋ฅผ ์ ๊ณตํ๋ ๊ฒฝ์ฐ ์ด๋ ์๋ชป๋ ์ ๋ ฅ์ ๋๋ค. IllegalArgumentException์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์ ํจํ๊ณ ์ ์ ํ ์ธ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.IllegalStateException
IllegalStateException์ ๊ฐ์ฒด๊ฐ ์ํ ์ค์ธ ์์ ์ ๋ถ์ ์ ํ ์ํ์ ์์ ๋ ๋ฐ์ํ๋ RuntimeException ์ ํ์ ๋๋ค . ์ด๋ ์์๋ ์ํ๊ฐ ์๋ ๊ฐ์ฒด์ ๋ํด ๋ฉ์๋๊ฐ ํธ์ถ๋๋ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค์ ๋ซ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ซํ ์ฐ๊ฒฐ์์ Statement ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ค๊ณ ํ๋ฉด createStatement() ๋ฉ์๋์ ์ด๋ฆฐ ์ฐ๊ฒฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ IllegalStateException์ด ๋ฐ์ํฉ๋๋ค. IllegalStateException์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ๊ฒํ ํ์ฌ ์ ์ ํ ์ํ์ ์๋ ๊ฐ์ฒด์ ๋ํด ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.์ง์๋์ง ์๋ ์์ ์์ธ
UnsupportedOperationException์ ๊ฐ์ฒด์ ๋ํด ์ง์๋์ง ์๋ ์์ ์ ์ํํ๋ ค๊ณ ์๋ํ ๋ ๋ฐ์ํ๋ RuntimeException ์ ํ ์ ๋๋ค . ์ด ์ค๋ฅ๋ ๊ฐ์ฒด์์ ๊ตฌํ๋์ง ์๊ฑฐ๋ ๊ฐ์ฒด์์ ์ง์ํ์ง ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค. ์์ธ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ค๋ฉด ๊ฐ์ฒด์์ ์ง์๋์ง ์๋ ์์ ์ ํธ์ถํ๋ฉด ์ ๋ฉ๋๋ค. ์์ ์ ์ง์ํ๋ ๊ฐ์ฒด์ ๋ํด ๋ฉ์๋๋ฅผ ํธ์ถํ๊ณ ์๋์ง ํ์ธํ๋ ค๋ฉด ์ฝ๋๋ฅผ ๊ฒํ ํด์ผ ํฉ๋๋ค.์ฐ์ ์์ธ
ArithmeticException์ ์ฐ์ ์ฐ์ฐ์ด ์ ํจํ์ง ์์ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ ๋ ๋ฐ์ํ๋ RuntimeException ์ ์ ํ์ ๋๋ค . ์ด ์์ธ๋ ์ ํจํ์ง ์๊ฑฐ๋ ์ ํจํ์ง ์์ ์ธ์๋ก ์ฐ์ ์ฐ์ฐ์ ์ํํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด 0์ผ๋ก ๋๋๋ ค๊ณ ํ ๋์ ๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ๊ณ ์ฐ์ ์ฐ์ฐ์ ์ํํ๊ธฐ ์ ์ ์ธ์๊ฐ ํ์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.๋ณด์์์ธ
SecurityException ์ ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ณด์ ์๋ฐ์ด ๋ฐ์ํ ๋ ๋ฐ์ํ๋ RuntimeException ์ ํ์ ๋๋ค . ์ด ์ค๋ฅ๋ ํ๋ก๊ทธ๋จ์ด ๋ณด์ ์ ์ฑ ์์ ํ์ฉํ์ง ์๋ ์์ ์ ์ํํ๋ ค๊ณ ์๋ํ ๋ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ฆฌ์์ค์ ์ก์ธ์คํ ์ ์๋์ง ํ์ธํ๊ณ ํน์ ๊ถํ์ด ์๋ ์์ ์ ์ํํด์ผ ํฉ๋๋ค.๋ฒํธํ์์์ธ
NumberFormatException์ ๋ฌธ์์ด์ ์ซ์ ํ์์ผ๋ก ๋ณํํ๊ธฐ ์ํด ๋ฉ์๋๋ฅผ ํธ์ถํ์ง๋ง ๋ฌธ์์ด์ด ์ ์ ํ ํ์์ด ์๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ RuntimeException ์ ํ์ ๋๋ค . ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋จผ์ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ณํํ๊ธฐ ์ ์ ์ ํจ์ฑ์ ๊ฒ์ฌํด์ผ ํฉ๋๋ค. ๋ํ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ๋์ ์ซ์ ์ ํ์ ๋ง๊ฒ ํ์์ด ์ง์ ๋ ๋ฌธ์์ด์ ๋ณํํ๋ ค๊ณ ํ๋์ง ํ์ธํ์ธ์.์ค๋จ๋ ์์ธ
InterruptedException์ ์ค๋ ๋๊ฐ ์ผ๋ถ ์ด๋ฒคํธ์ ๋ํด ๋๊ธฐ, ํด๋ฉด ๋๋ ์ฐจ๋จ ์ค์ด๊ณ ํด๋น ์ด๋ฒคํธ๊ฐ ๋ค๋ฅธ ์ค๋ ๋์ ์ํด ์ค๋จ๋๋ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ํ์ธ๋ ์์ธ์ ๋๋ค. ์ค๋ ๋๊ฐ ์ ๋ ฅ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ฑฐ๋, ์ ๊ธ์ ํด์ ํ๊ฑฐ๋, ๋ค๋ฅธ ์์ ์ ์๋ฃํ๋ ์ค์ด๊ณ ๋ค๋ฅธ ์ค๋ ๋๊ฐ ๋๊ธฐ ์ค์ธ ์ค๋ ๋๋ฅผ ์ค๋จํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด InterruptedException์ ํฌ์ฐฉ ํ๊ณ ๋ฆฌ์์ค ์ ๋ฆฌ, ์ค๋ ๋ ์ค์ง ๋๋ ๊ธฐํ ์ ์ ํ ์กฐ์น๋ฅผ ์ทจํ์ฌ ๋์ํ ์ ์์ต๋๋ค . InterruptedException ์ด ๋ฐ์ํ๋ ๊ฒฝ์ฐ ์ฝ๋๋ฅผ ํ์ธํ์ฌ ์ค๋ ๋ ์ค๋จ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ณ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.FileNotFoundException
FileNotFoundException์ ํ๋ก๊ทธ๋จ์ด ์กด์ฌํ์ง ์๊ฑฐ๋ ์ง์ ๋ ์์น์์ ์ฐพ์ ์ ์๋ ํ์ผ์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ ํ์ธ๋ ์์ธ์ ๋๋ค. ํ์ผ์ ์ฒ ์๊ฐ ํ๋ฆฌ๊ฑฐ๋ ์ด๋ ๋๋ ์ญ์ ๋ ๊ฒฝ์ฐ ๋๋ ํ๋ก๊ทธ๋จ์ ํ์ผ์ ์ก์ธ์คํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ์๋ ๋ํ๋ ์ ์์ต๋๋ค. ์ค๋ฅ๋ฅผ ์์ ํ๋ ค๋ฉด ์ ๋ ฅ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ์ฌ ํ์ผ ๊ฒฝ๋ก๊ฐ ์ฌ๋ฐ๋ฅธ์ง, ํ๋ก๊ทธ๋จ์ ํ์ผ์ ์ก์ธ์คํ๋ ๋ฐ ํ์ํ ๊ถํ์ด ์๋์ง ํ์ธํ๋ฉด ๋ฉ๋๋ค.IO์์ธ
IOException์ ํ์ผ์ด๋ ๋คํธ์ํฌ ์์ผ์ ๋ํ ์ฝ๊ธฐ ๋๋ ์ฐ๊ธฐ์ ๊ฐ์ ์ ๋ ฅ ๋๋ ์ถ๋ ฅ ์์ ์ ์ํํ๋ ๋์ ๋ฐ์ํ ์ค๋ฅ๋ฅผ ๋ํ๋ด๋ Java์ ํ์ธ๋ ์์ธ์ ๋๋ค. ์ด๋ ์ง์ ๋ ํ์ผ์ด ์๊ฑฐ๋ ์ก์ธ์คํ ์ ์๋ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ์ค๋ฅ ๋๋ ๊ถํ ๋ถ์กฑ ๋ฑ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๋ก ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ค๋ฅ ๋ฉ์์ง ํ์ธ, try-catch ๋ฅผ ์ฌ์ฉํ ์์ธ ์ฒ๋ฆฌ , ๋ฆฌ์์ค ๋ซ๊ธฐ, ํ์ผ ๊ถํ ํ์ธ ๋ฑ ์ฌ๋ฌ ์์ ์ ์ํํด์ผ ํฉ๋๋ค .NoSuchMethodException
NoSuchMethodException์ ํด๋์ค์ ์กด์ฌํ์ง ์๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๊ณ ํ ๋ ๋ฐํ์์ ๋ฐ์ํ๋ ์์ธ์ ๋๋ค. ์ด ์์ธ๋ ์ผ๋ฐ์ ์ผ๋ก Class.getMethod() ๋๋ Class.getDeclaredMethod() ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์๋๋ฅผ ํธ์ถ ํ๊ณ ์ง์ ๋ ๋ฉ์๋ ์ด๋ฆ์ด ํด๋์ค ๋๋ ์ธํฐํ์ด์ค์ ์๋ ๊ฒฝ์ฐ ๋ฐ์ํฉ๋๋ค. java.lang.reflect.Method ํด๋์ค ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ค๊ณ ํ๋๋ฐ ์ง์ ๋ ๋ฉ์๋ ์ด๋ฆ์ด ๊ฐ์ฒด์ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ ์์ธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด ์์ธ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ฌ๋ฐ๋ฅธ ๋ฉ์๋ ์๋ช ๊ณผ ์ก์ธ์ค ์ง์ ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ํจํ ๋ฉ์๋๋ฅผ ํธ์ถํด์ผ ํฉ๋๋ค.NoSuchFieldException
NoSuchFieldException์ ํด๋์ค์ ์๋ ํ๋์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ๋ฐ์ํ๋ ๋ฐํ์ ์์ธ์ ๋๋ค. ์ด ์์ธ๋ ์ผ๋ฐ์ ์ผ๋ก Class.getField() ๋๋ Class.getDeclaredField()๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉ์๋๋ฅผ ํธ์ถ ํ๊ณ ์ง์ ๋ ํ๋ ์ด๋ฆ์ด ํด๋์ค ๋๋ ์ธํฐํ์ด์ค์ ์์ ๋ ๋ฐ์ํฉ๋๋ค. ๋ํ java.lang.reflect.Field ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ํ๋์ ์ก์ธ์คํ๋ ค๊ณ ํ๋๋ฐ ์ง์ ๋ ํ๋ ์ด๋ฆ์ด ๊ฐ์ฒด์ ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ์๋ ํธ์ถํ ์ ์์ต๋๋ค. ์ด ์์ธ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ฌ๋ฐ๋ฅธ ์ด๋ฆ๊ณผ ์ก์ธ์ค ํ์ ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ํจํ ํ๋์ ์ก์ธ์คํ๊ณ ์๋์ง ํ์ธํ์ธ์. ๋น๊ณต๊ฐ ํ๋์ ์ก์ธ์คํ๋ ๊ฒฝ์ฐ getField() ๋ฉ์๋ ๋์ getDeclaredField() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค .๋ถ๋ฒ์ ๊ทผ์์ธ
IllegalAccessException์ ํด๋์ค์ ํ๋๋ ๋ฉ์๋์ ์ก์ธ์คํ๋ ค๊ณ ํ์ง๋ง ํ์ํ ์ก์ธ์ค ๊ถํ์ด ์์ ๋ ๋ฐ์ํ๋ ๋ฐํ์ ์์ธ์ ๋๋ค. ์ด ์์ธ๋ ์ผ๋ฐ์ ์ผ๋ก ํด๋์ค ์ธ๋ถ์์ ์ ์ฉ ํ๋๋ ๋ฉ์๋์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ๋๋ ์๋ ํด๋์ค์ ํ์ ํด๋์ค๊ฐ ์๋ ํด๋์ค์์ ๋ณดํธ๋ ํ๋๋ ๋ฉ์๋์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ๋ํ๋ฉ๋๋ค. ๋ํ java.lang.reflect.AccessibleObject ํด๋์ค ์ ์ํด ์ฌ์ฉํ ์ ์๋ ๊ฒ์ผ๋ก ํ์๋ ํ๋๋ ๋ฉ์๋์ ์ก์ธ์คํ๋ ค๊ณ ํ ๋ ํธ์ถ๋ ์๋ ์์ต๋๋ค . ์ด ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ก์ธ์คํ๋ ค๋ ํ๋ ๋๋ ๋ฐฉ๋ฒ์ ๋ํด ํ์ํ ๊ถํ์ด ์๋์ง ํ์ธํ์ญ์์ค. ํ๋๋ ๋ฉ์๋๊ฐ ๋น๊ณต๊ฐ์ธ ๊ฒฝ์ฐ ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ๊ณ AccessibleObject๋ฅผ true ๋ก ์ค์ ํด์ผ ํ ์๋ ์์ต๋๋ค (์ก์ธ์คํ๋ ค๋ฉด). ๊ทธ๋ฌ๋ ๋ฆฌํ๋ ์ ์ ์ฌ์ฉํ์ฌ ํ๋ผ์ด๋น ํ๋๋ ๋ฉ์๋์ ์ก์ธ์คํ ๋๋ ์ฃผ์ํ์ธ์. ์บก์ํ๊ฐ ์ค๋จ๋๊ณ ํด๋์ค์ ๋ฌด๊ฒฐ์ฑ์ด ์์๋ ์ ์์ต๋๋ค.ํ์ธ์ค๋ฅ
verifyError๋ LinkageError์ ํ์ ํด๋์ค์ธ ๋ฐํ์ ์ค๋ฅ์ ๋๋ค . ์ด๋ JVM(Java Virtual Machine)์ด ํน์ ์ ํจ์ฑ ๊ฒ์ฌ ๊ท์น์ ์๋ฐํ๋ ํด๋์ค ํ์ผ์ ๋ฐ๊ฒฌํ ๋ ๋ฐ์ํฉ๋๋ค. Java ํด๋์ค๊ฐ ์ปดํ์ผ๋๋ฉด ์ปดํ์ผ๋ฌ๋ ๋ฐ์ดํธ์ฝ๋๊ฐ ์ ํ ์์ ์ฑ, ์คํ ๋ฐ ์ง์ญ ๋ณ์์ ์ ์ ํ ์ฌ์ฉ๊ณผ ๊ฐ์ ํน์ ๊ท์น ๋ฐ ์ ํ ์ฌํญ์ ๋ฐ๋ฅด๋์ง ํ์ธํฉ๋๋ค. ํด๋์ค ํ์ผ์ด ์ด๋ฌํ ๊ท์น์ ์๋ฐํ๋ ๊ฒฝ์ฐ JVM์ ๋ฐํ์์ ํด๋์ค๋ฅผ ๋ก๋ํ๊ณ ํ์ธํ ๋ verifyError๋ฅผ ๋ฐ์์ํต๋๋ค. verifyError ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด ์ฝ๋๊ฐ Java ์ธ์ด์ ์ฌ๋ฐ๋ฅธ ๊ตฌ๋ฌธ๊ณผ ์๋ฏธ๋ฅผ ๋ฐ๋ฅด๋์ง ํ์ธํ์ธ์. verifyError ๊ฐ ๋ฐ์ํ๋ฉด ์ฝ๋๋ฅผ ๊ฒ์ฌํ์ฌ ์ฝ๋๊ฐ ์ ํจํ์ง, Java ๋ฐ์ดํธ์ฝ๋ ํ์ธ ๊ท์น์ ์๋ฐํ์ง ์์๋์ง ํ์ธํด์ผ ํฉ๋๋ค.๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ค๋ฅ
OutOfMemoryError๋ ๋ฐํ์์ ํด๊ฒฐํ ์ ์๋ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ Throwable ์ ํ ์ธ Error์ ํ์ ํด๋์ค์ ๋๋ค . Java 8์๋ ๊ฐ๋น์ง ์์ง ๋ฐ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ์ธก๋ฉด์์ ์ผ๋ถ ๊ฐ์ ์ฌํญ์ด ํฌํจ๋์ด ์์ง๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋๋ฌด ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์๋ชป ๊ด๋ฆฌํ๋ ๊ฒฝ์ฐ ์ฌ์ ํ OutOfMemoryError ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. OutOfMemoryError๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด Java ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ ์ ํ๊ฒ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ณ , ๋ถํ์ํ ๊ฐ์ฒด ์์ฑ์ ํผํ๊ณ , ๋ ์ด์ ํ์ํ์ง ์์ ๊ฐ์ฒด๋ฅผ ์ ์ ํ๊ฒ ์ญ์ ํ๋ ๊ฒ์ด ํฌํจ๋ฉ๋๋ค. ๋ํ Java ํ๋ก๊ทธ๋จ์ ์คํํ ๋ -Xmx ํ๋๊ทธ ๋ฅผ ์ฌ์ฉํ์ฌ JVM์ ์ต๋ ํ ํฌ๊ธฐ๋ฅผ ๋๋ฆด ์ ์์ต๋๋ค .์คํ์ค๋ฒํ๋ก์ฐ ์ค๋ฅ
StackOverflowError ๋ ํ๋ก๊ทธ๋จ์ ํ์ํ ์คํ ํฌ๊ธฐ๊ฐ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ์์ ์ด๊ณผํ ๋ ๋ฐ์ํ๋ ์ค๋ฅ ์ ํ์ ๋๋ค. ์ด๋ ํ๋ก๊ทธ๋จ์ด ์ค์ฒฉ๋ ๋ฉ์๋๋ฅผ ๋๋ฌด ๋ง์ด ํธ์ถํ๊ฑฐ๋ ๋ฉ์๋๊ฐ ์์ ์ ๋๋ฌด ๋ง์ด ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ์ฌ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. JVM(Java Virtual Machine)์ ์คํ ์คํ์ ๊ณ ์ ๋ ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ฉฐ, ์ด๋ ๋ฉ์๋ ํธ์ถ ๋ฐ ์ง์ญ ๋ณ์๋ฅผ ์ถ์ ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์คํ์ด ์ค๋ฒํ๋ก๋๋ฉด JVM์ StackOverflowError ๋ฅผ ๋ฐ์์ํต๋๋ค . StackOverflowError๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด Java ํ๋ก๊ทธ๋จ์ด ์ฌ๊ท ๋ฐ ๋ฉ์๋ ํธ์ถ์ ์ ์ ํ๊ฒ ์ฌ์ฉํ๋์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. StackOverflowError ๊ฐ ๋ฐ์ํ๋ฉด Java ํ๋ก๊ทธ๋จ์ ์คํํ ๋ -Xss ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ์คํ ํฌ๊ธฐ๋ฅผ ๋๋ ค๋ณผ ์ ์์ต๋๋ค .InvocationTargetException
InvocationTargetException์ Java ๋ฆฌํ๋ ์ ๋ฉ์ปค๋์ฆ์์ ๋ฐ์ํ๋ ํ์ธ๋ ์์ธ์ ๋๋ค. ์ด๋ java.lang.reflect.InvocationTargetException ํจํค์ง์ ์ผ๋ถ ์ด๋ฉฐ ๋ฉ์๋ ๋๋ ์์ฑ์ ํธ์ถ ์ค์ ์์ธ๊ฐ ๋ฐ์ํ์์ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. Java ๋ฆฌํ๋ ์ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ๋ฉ์๋๋ ์์ฑ์๊ฐ ํธ์ถ๋๋ฉด java.lang.reflect.Method ๋๋ java.lang.reflect.Constructor ํด๋์ค ์ ํธ์ถ() ๋ฉ์๋๊ฐ ํธ์ถ๋ฉ๋๋ค . ํธ์ถ๋ ๋ฉ์๋๋ ์์ฑ์๊ฐ ์์ธ๋ฅผ ๋ฐ์์ํค๋ ๊ฒฝ์ฐ, Invoke() ๋ฉ์๋๋ ์ด๋ฅผ ํฌ์ฐฉํ์ฌ InvocationTargetException ์ผ๋ก ๋ํํฉ๋๋ค . ๊ทธ๋ฐ ๋ค์ ์ด ์์ธ๋ ํธ์ถ์() ํธ์ถ์์๊ฒ ์ ๋ฌ๋ฉ๋๋ค . InvocationTargetException์ ์์ ํ๋ ค๋ฉด ์ด๋ฅผ ํฌ์ฐฉํ๊ณ getCause () ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ทผ๋ณธ ์์ธ ์์ธ๋ฅผ ๊ฐ์ ธ์จ ๋ค์ ๊ทธ์ ๋ฐ๋ผ ๊ทผ๋ณธ ์์ธ ์์ธ๋ฅผ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ๊ทผ๋ณธ ์์ธ์ ํ์ธ๋ ์์ธ์ผ ์๋ ์๊ณ ๋ฐํ์ ์์ธ์ผ ์๋ ์์ผ๋ฏ๋ก ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.Java์์ ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์์ธ๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ
NullPointerException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: null ๊ฐ์ด ์๋ ๊ฐ์ฒด์ ์ก์ธ์คํ๋ ๋ฉ์๋๊ฐ ์์ต๋๋ค .String title= null;
System.out.println(title.length()); // ะญัะพ ะฒัะทะพะฒะตั NullPointerException
ํด๊ฒฐ ๋ฐฉ๋ฒ #1: ์ฌ์ฉํ๊ธฐ ์ ์ ๊ฐ์ฒด๊ฐ null์ธ์ง ํ์ธํ์ธ์.
if(title!= null) {
System.out.println(title.length());
} else {
System.out.println("title is null");
}
ํด๊ฒฐ ๋ฐฉ๋ฒ #2: Optional์ ์ฌ์ฉํ์ฌ NullPointerException์ ๋ฐฉ์งํฉ๋๋ค .
Optional<String> optionalTitle = Optional.ofNullable(getTitle());
if (optionalTitle.isPresent()) {
String title= optionalTitle.get();
System.out.println("Title: " + title);
} else {
System.out.println("Title is not available.");
}
ArrayIndexOutOfBoundsException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ๋ฒ์ ๋ฐ์ ์๋ ์ธ๋ฑ์ค์ ์๋ ๋ฐฐ์ด์ ์ก์ธ์คํ๋ ค๊ณ ํฉ๋๋ค.int[] numbers = {4, 5, 6};
System.out.println(numbers[3]); // ะญัะพ ะฒัะทะพะฒะตั ArrayIndexOutOfBoundsException
ํด๊ฒฐ์ฑ
: ๋ฐฐ์ด์ ์ก์ธ์คํ๊ธฐ ์ ์ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ํ์ธํ๊ณ ์ ํจํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค.
int[] numbers = {4, 5, 6};
if (numbers.length > 3) {
System.out.println(numbers[3]);
} else {
System.out.println("ArrayIndexOutOfBoundsException: Please use valid indexes of the Array");
}
ClassCastException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ์ค์ ์ ํ๊ณผ ํธํ๋์ง ์๋ ์ ํ์ผ๋ก ๊ฐ์ฒด๋ฅผ ์บ์คํ ํ๋ ค๊ณ ํฉ๋๋ค.Object obj = "Java Exception";
Integer number = (Integer) obj; // ะญัะพ ะฒัะทะพะฒะตั ClassCastException
ํด๊ฒฐ ๋ฐฉ๋ฒ: ํธํ๋๋ ์ ํ์ผ๋ก๋ง ๊ฐ์ฒด๋ฅผ โโ์บ์คํ
ํด์ผ ํฉ๋๋ค.
Object obj = "Java Exception";
if(obj instanceof Integer) {
Integer number = (Integer) obj;
System.out.println(number);
} else {
System.out.println("Object cannot caste to Integer");
}
IllegalArgumentException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ๋ฉ์๋์ ์๋ชป๋ ์ธ์๋ฅผ ์ ๋ฌํ์ต๋๋ค.public void printNumber(int number) {
if(number <= 0) {
throw new IllegalArgumentException("You cannot pass a negative number or zero");
}
System.out.println(number);
}
printNumber(-1); // ะญัะพ ะฒัะทะพะฒะตั IllegalArgumentException
ํด๊ฒฐ์ฑ
: ๋ฉ์๋์ ์ ํจํ ์ธ์๋ฅผ ์ ๋ฌํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค. ์ด ๊ฒฝ์ฐ ์์๋ฅผ ์ ๋ฌํ์ญ์์ค.
printNumber(1); // ะญัะพ ััะฟะตัะฝะพ ะฝะฐะฟะตัะฐัะฐะตั 1.
IllegalStateException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ๊ฐ์ฒด๊ฐ ์๋ชป๋ ์ํ์ ๋๋ค.public class Bike {
private Boolean isStarted;
public void start() {
if(isStarted) {
throw new IllegalStateException("Bike is already started");
}
isStarted = true;
System.out.println("Bike started");
}
}
Bike bike= new Bike();
bike.start();
bike.start(); // ะญัะพ ะฒัะทะพะฒะตั IllegalStateException ะฟะพัะพะผั ััะพ bike is already started
ํด๊ฒฐ์ฑ
: ๊ฐ์ฒด ์ํ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ ์งํ๋์ง ํ์ธํ์ญ์์ค.
Bike bike= new Bike();
bike.start();
UnsupportedOperationException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ๊ฐ์ฒด์์ ์ง์ํ์ง ์๋ ์์ ์ ์ฌ์ฉํฉ๋๋ค. ์ธ๊ธฐ ์๋ ์ ์ค ํ๋๋ ๋ถ๋ณ ์ปฌ๋ ์ ์ ๋ํด ์ ๊ฑฐ() ์์ ์ ์ฌ์ฉํ ๋ UnsupportedOperationException ์์ธ๊ฐ ํ์๋ ๊ฐ๋ฅ์ฑ์ด ์๋ค๋ ๊ฒ์ ๋๋ค .List<String> list = Arrays.asList("Java", "Angular", "Spring");
list.add("Python"); // ะญัะพ ะฒัะทะพะฒะตั UnsupportedOperationException
Arrays.asList() ๋ฉ์๋๋ ๋ณ๊ฒฝํ ์ ์๋ ๋ชฉ๋ก์ ๋ฐํ ํ๋ฏ๋ก ์์ ์ถ๊ฐ ๋๋ ์ ๊ฑฐ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ: ๊ฐ์ฒด์ ๋ํด ์ง์๋๋ ์์
๋ง ํธ์ถํด์ผ ํฉ๋๋ค.
List<String> list = new ArrayList<>(Arrays.asList("Java", "Angular" "Spring"));
list.add("Python");
System.out.println(list);
ArithmeticException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค #1: ๋ถ์ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ์ ์ ๋๋๊ธฐ ์ฐ์ฐ์ ์ํํ๋ ค๊ณ ํฉ๋๋ค.int i = 10;
int j = 4;
int k = i/j; // ะญัะพ ะฒัะทะพะฒะตั ะธัะบะปััะตะฝะธะต ArithmeticException: ัะตะปะพัะธัะปะตะฝะฝะพะต ะดะตะปะตะฝะธะต ะฑัะดะตั ะดัะพะฑะฝัะผ
์ฌ๊ธฐ์ ๋๋๊ธฐ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ ๋ถ์๊ฐ์ธ 2.5์
๋๋ค. ์ ์๋ ๋ถ์ ๊ฐ์ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ArithmeticException ์ด ๋ฐ์ํฉ๋๋ค . ํด๊ฒฐ ๋ฐฉ๋ฒ: ์ด ์์ธ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด double ๊ณผ ๊ฐ์ ๋ถ์ ๊ฐ์ ์ง์ํ๋ ๋ฐ์ดํฐ ์ ํ์ ์ฌ์ฉํ์ฌ ๋๋๊ธฐ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค. ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
int i = 10;
int j = 4;
double k = (double) i/j;
์๋๋ฆฌ์ค #2: 0์ผ๋ก ๋๋๋ ค๊ณ ํ๋ฉด ์ด ์์ธ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ด ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค์
๋๋ค.
int i = 4;
int j = 0;
int k = i/j; // ะญัะพ ะฒัะทะพะฒะตั ะธัะบะปััะตะฝะธะต ArithmeticException: ะฝะตะปัะทั ะดะตะปะธัั ะฝะฐ ะฝะพะปั
ํด๊ฒฐ์ฑ
: 0์ผ๋ก ๋๋๊ธฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ์ญ์์ค. ์๋ฅผ ๋ค์ด ์๋ ์ฝ๋๋ ์ฌ๋ฐ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ๋ณด์ฌ์ค๋๋ค.
int i = 4;
int j = 0;
if(j != 0) {
int k = i/j;
System.out.println(k);
} else {
System.out.println("ArithmeticException: Cannot divide by zero");
}
IndexOutOfBoundsException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ์ปฌ๋ ์ ์ธ๋ถ์ ์๋ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ปฌ๋ ์ ์ ์ก์ธ์คํ๋ ค๊ณ ํฉ๋๋ค.List<String> list = Arrays.asList("Apple", "Papaya", "Mango");
System.out.println(list.get(3)); // ะญัะพ ะฒัะทะพะฒะตั IndexOutOfBoundsException
ํด๊ฒฐ์ฑ
: ์ปฌ๋ ์
์ ์ก์ธ์คํ๊ธฐ ์ ์ ์ปฌ๋ ์
์ ํฌ๊ธฐ๋ฅผ ํ์ธํ๊ณ ์ ํจํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ์ญ์์ค.
List<String> list = Arrays.asList("Apple", "Papaya", "Mango");
if (list.size() > 3) {
System.out.println(list.get(3));
} else {
System.out.println("You are using the Index which is out of bounds");
}
IOException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ํ์ผ์ ์ก์ธ์คํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๋ ฅ/์ถ๋ ฅ ์์ ์ด ์คํจํฉ๋๋ค.try {
File inputFile = new FileReader("pqr.txt");
BufferedReader reader = new BufferedReader(inputFile);
String line = reader.readLine();
System.out.println(line);
} catch (IOException e) {
e.printStackTrace();
}
ํด๊ฒฐ ๋ฐฉ๋ฒ: I/O ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ณ ๋ฆฌ์์ค๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ซํ๋์ง ํ์ธํ์ญ์์ค.
File inputFile = new File("pqr.txt");
if (!inputFile.exists() || !inputFile.canRead()) {
System.out.println("The input file is missing or not readable.");
return;
}
try {
BufferedReader reader = new BufferedReader(inputFile);
String line = reader.readLine();
System.out.println(line);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
๋์์ผ๋ก Java 7์ ๋์
๋ try-with-resource ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์๋์ ๊ฐ์ด ๋ฆฌ์์ค๋ฅผ ์๋์ผ๋ก ๋ซ์ ์ ์์ต๋๋ค. try ๋ฌธ ์์ ํ๋ ์ด์์ ๋ฆฌ์์ค๋ฅผ ์ ์ธํ ์ ์์ผ๋ฉฐ , Java๋ ๋ธ๋ก์ด ์ ์์ ์ผ๋ก ์๋ฃ๋๊ฑฐ๋ ์์ธ๊ฐ ๋ฐ์ํ๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ธ๋ก ๋์์ ์๋์ผ๋ก ๋ฆฌ์์ค๋ฅผ ๋ซ์ต๋๋ค.
try (BufferedReader reader = new BufferedReader(new FileReader("pqr.txt"))) {
....
} catch {
....
}
FileNotFoundException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ์ง์ ๋ ์์น์์ ํ์ผ์ ์ฐพ์ ์ ์์ต๋๋ค.try {
BufferedReader reader = new BufferedReader(new FileReader("abc.txt"));
String line = reader.readLine();
System.out.println(line);
reader.close();
} catch (FileNotFoundException | IOException e) {
System.out.println("An error has occurred while reading the file: " + e.getMessage());
}
ํด๊ฒฐ ๋ฐฉ๋ฒ: ํ์ผ์ด ์กด์ฌํ๊ณ ํด๋น ํ์ผ์ ์ก์ธ์คํ ์ ์๋ ์ ์ ํ ๊ถํ์ด ์๋์ง ํ์ธํ์ญ์์ค.
try {
File file = new File("abc.txt");
if(!file.exists()) {
throw new FileNotFoundException("File not found at the specified location");
}
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = reader.readLine();
System.out.println(line);
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
NoSuchMethodException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ์ฐพ์ ์ ์๋ ๋ฉ์๋์ ์ก์ธ์คํ๋ ค๋ ๊ฒฝ์ฐ.public class TestClass {
public void sayHello() {
System.out.println("Hello");
}
}
TestClass obj = new TestClass();
Method method = obj.getClass().getMethod("printHello"); // ะญัะพ ะฒัะทะพะฒะตั NoSuchMethodException
ํด๊ฒฐ ๋ฐฉ๋ฒ: ๋ฉ์๋๊ฐ ์กด์ฌํ๋์ง, ๋ฉ์๋ ์ด๋ฆ๊ณผ ์๋ช
์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ์ญ์์ค.
public class TestClass {
public void sayHello() {
System.out.println("Hello");
}
}
TestClass obj = new TestClass();
try {
Method method = obj.getClass().getMethod("sayHello");
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
ConcurrentModificationException์ ์์ ํ๋ ๋ฐฉ๋ฒ
์๋๋ฆฌ์ค: ์ปฌ๋ ์ ์ด ๋ฐ๋ณต๋๋ ๋์ ๋ณ๊ฒฝ๋ฉ๋๋ค.List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
for (String str : list) {
list.remove(str); // ะญัะพ ะฒัะทะพะฒะตั ConcurrentModificationException
}
ํด๊ฒฐ์ฑ
: ๋ฐ๋ณต์๋ฅผ ์ฌ์ฉํ์ฌ ์ปฌ๋ ์
์ ๋ฐ๋ณตํ๊ณ ๋ฐ๋ณต์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ปฌ๋ ์
์ ์์ ํฉ๋๋ค.
List<String> list = new ArrayList<>();
list.add("Java");
list.add("Python");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String str = iterator.next();
iterator.remove();
}
GO TO FULL VERSION