๐ Throwable๋?
Error์ Exception ๋ชจ๋ ์๋ฐ์ ์ต์์ ํด๋์ค์ธ Throwable๋ฅผ ์์๋ฐ์ต๋๋ค.
๋ชจ๋ Error์ Exception ํด๋์ค๋ Throwable ํด๋์ค๋ฅผ ์์๋ฐ๊ณ ์์ผ๋ฉฐ, getMessage()์ printStackTrace() ๋ฉ์๋๋ฅผ ํตํด ํ์ฌ Error์ Exception ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ฌ์ฉ์๋ Error์ ์ํฉ์ ๋ฏธ๋ฆฌ ๋ฏธ์ฐ์ ๋ฐฉ์งํ๊ธฐ ์ํด์ Exception ์ํฉ์ ๋ง๋ค ์ ์์ผ๋ฉฐ, java์์๋ try-catch๋ฌธ์ผ๋ก Exception handling์ ํ ์ ์์ต๋๋ค.
๐ Error๋?
Error๋ ์์คํ
์ด ์ข
๋ฃ๋์ด์ผ ํ ์์ค์ ์ํฉ๊ณผ ๊ฐ์ด ์์ตํ ์ ์๋ ์ฌ๊ฐํ ๋ฌธ์ ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ, ๊ฐ๋ฐ์๊ฐ ๋ฏธ๋ฆฌ ์์ธกํ์ฌ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
-
StackOverflowError : ํธ์ถ์ ๊น์ด๊ฐ ๊น์ด์ง๊ฑฐ๋ ์ฌ๊ท๊ฐ ์ง์๋์ด stack overflow ๋ฐ์ ์ ๋์ ธ์ง๋ ์ค๋ฅ์
๋๋ค.
-
OutOfMemoryError : JVM์ด ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ์ ๋ถ์กฑ์ผ๋ก ๋ ์ด์ ๊ฐ์ฒด๋ฅผ ํ ๋นํ ์ ์์ ๋ ๋์ ธ์ง๋ ์ค๋ฅ์
๋๋ค. Garbage Collector์ ์ํด ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ๋ณด๋์ง ๋ชปํ๋ ์ํฉ์ด๊ธฐ๋ ํฉ๋๋ค.
- Garbage Collector์ ์ํด ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ๋ณด๋์ง ๋ชปํ๋ ์ํฉ์ผ ๋
- heap ์ฌ์ด์ฆ ๋ถ์กฑ
- ๋๋ฌด ๋ง์ class๋ฅผ ๋ก๋ํ ๋
- ๊ฐ์ฉ๊ฐ๋ฅํ swap์ด ์์ ๋
- ํฐ ๋ฉ๋ชจ๋ฆฌ์ native๋ฉ์๋๊ฐ ํธ์ถ๋ ๋
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, dumpํ์ผ๋ถ์, jvm ์ต์
์์ ๋ฑ์ด ์๋ค.
๐ Exception์ด๋?
Exception์ ๊ฐ๋ฐ์๊ฐ ๊ตฌํํ ๋ก์ง์์ ๋ฐ์ํ ์ค์๋ ์ฌ์ฉ์์ ์ํฅ์ ์ํด ๋ฐ์ํฉ๋๋ค. Error์ ๋ฌ๋ฆฌ ๊ฐ๋ฐ์๊ฐ ๋ฏธ๋ฆฌ ์์ธกํ์ฌ ๋ฐฉ์งํ ์ ์๊ธฐ์ ์ํฉ์ ๋ง๋ Exception Handling์ด ํ์ํฉ๋๋ค.
Exception์ 2๊ฐ์ง ์ข
๋ฅ
- Checked Exception : ์์ธ์ฒ๋ฆฌ๊ฐ ํ์์ด๋ฉฐ, ์ฒ๋ฆฌํ์ง ์์ผ๋ฉด ์ปดํ์ผ๋์ง ์์ต๋๋ค. JVM ์ธ๋ถ์ ํต์ (๋คํธ์ํฌ, ํ์ผ์์คํ
๋ฑ)ํ ๋ ์ฃผ๋ก ์ฐ์
๋๋ค.
- RuntimeException ์ด์ธ์ ์๋ ๋ชจ๋ ์์ธ
- IOException, SQLException ๋ฑ
- Unchecked Exception : ์ปดํ์ผ ๋ ์ฒดํฌ๋์ง ์๊ณ , Runtime์ ๋ฐ์ํ๋ Exception์ ๋งํฉ๋๋ค.
- RuntimeException ํ์์ ๋ชจ๋ ์์ธ
- NullPointerException, IndexOutOfBoundException ๋ฑ
Exception ํด๋์ค
- NullPointerException : Null ๋ ํผ๋ฐ์ค๋ฅผ ์ฐธ์กฐํ ๋ ๋ฐ์, ๋ญ๊ฐ ๋์์ํฌ ๋ ๋ฐ์ํฉ๋๋ค.
- IndexOutOfBoundsException : ๋ฐฐ์ด๊ณผ ์ ์ฌํ ์๋ฃ๊ตฌ์กฐ(๋ฌธ์์ด, ๋ฐฐ์ด, ์๋ฃ๊ตฌ์กฐ)์์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ ์ธ๋ฑ์ค ๋ฒํธ ์ฌ์ฉ์ผ๋ก ๋ฐ์ํฉ๋๋ค.
- FormatException : ๋ฌธ์์ด, ์ซ์, ๋ ์ง ๋ณํ ์ ์๋ชป๋ ๋ฐ์ดํฐ(ex. "123A" -> 123 ์ผ๋ก ๋ณํ ์)๋ก ๋ฐ์ํ๋ฉฐ, ๋ณดํต ์ฌ์ฉ์์ ์
๋ ฅ, ์ธ๋ถ ๋ฐ์ดํฐ ๋ก๋ฉ, ๊ฒฐ๊ณผ ๋ฐ์ดํฐ์ ๋ณํ ์ฒ๋ฆฌ์์ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
- ArthmeticException : ์ ์๋ฅผ 0์ผ๋ก ๋๋๋ ๋ฐ์ํฉ๋๋ค.
- ClassCastException : ๋ณํํ ์ ์๋ ํ์
์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ณํํ ๋ ๋ฐ์ํฉ๋๋ค.
- IllegalArgumentException : ์๋ชป๋ ์ธ์ ์ ๋ฌ ์ ๋ฐ์ํฉ๋๋ค.
- IOException : ์
์ถ๋ ฅ ๋์ ์คํจ ๋๋ ์ธํฐ๋ฝํธ ์ ๋ฐ์ํฉ๋๋ค.
- IllegalStateException : ๊ฐ์ฒด์ ์ํ๊ฐ ๋งค์๋ ํธ์ถ์๋ ๋ถ์ ์ ํ ๊ฒฝ์ฐ์ ๋ฐ์ํฉ๋๋ค.
- ConcurrentModificationException : ๊ธ์ง๋ ๊ณณ์์ ๊ฐ์ฒด๋ฅผ ๋์์ ์์ ํ๋๊ฒ์ด ๊ฐ์ง๋ ๊ฒฝ์ฐ ๋ฐ์ํฉ๋๋ค.
- UnsupportedOperationException : ๊ฐ์ฒด๊ฐ ๋ฉ์๋๋ฅผ ์ง์ํ์ง ์๋ ๊ฒฝ์ฐ ๋ฐ์ํฉ๋๋ค.
Exception Handling
Java์์ ๋ชจ๋ ์์ธ๊ฐ ๋ฐ์ํ๋ฉด (XXX)Exception ๊ฐ์ฒด๋ฅผ ์์ฑํฉ๋๋ค.
์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์๋ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์์ต๋๋ค.
- ์ง์ try-catch๋ฅผ ์ด์ฉํด์ ์์ธ์ ๋ํ ์ต์ข
์ ์ธ ์ฑ
์์ ์ง๊ณ ์ฒ๋ฆฌํ๋ ๋ฐฉ์
- throws Exception์ ์ด์ฉํด์ ๋ฐ์ํ ์์ธ์ ์ฑ
์์ ํธ์ถํ๋ ์ชฝ์ด ์ฑ
์์ง๋๋ก ํ๋ ๋ฐฉ์ (์ฃผ๋ก ํธ์ถํ๋ ์ชฝ์ ์์ธ๋ฅผ ๋ณด๊ณ ํ ๋ ์ฌ์ฉํจ)
๋ค๋ฅธ ๋ฉ์๋์ ์ผ๋ถ๋ถ์ผ๋ก ๋์ํ๋ ๊ฒฝ์ฐ์ ๋์ง๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค..
์ฐธ๊ณ
ํผ๋๋ฐฑ ๋ฐ ๊ฐ์ ์ ์ ๋๊ธ์ ํตํด ์๋ ค์ฃผ์ธ์๐