[JAVA] try catch(์์ธ์ฒ๋ฆฌ)
in Tech-Stack on JAVA
Contents
Exception (์์ธ)
์์ธ๋ ์ฌ์ฉ์์ ์๋ชป๋ ์กฐ์ ๋๋ ๊ฐ๋ฐ์์ ์๋ชจ์๋ ์ฝ๋ฉ์ผ๋ก ์ธํด ๋ฐ์ํ๋ ํ๋ก๊ทธ๋จ ์ค๋ฅ์ด๋ค.
์์ธ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์์ธ์ฒ๋ฆฌ๋ฅผ ํตํด ํ๋ก๊ทธ๋จ์ด ์ข ๋ฃ๋์ง ์๊ณ ์ ์์ ์ผ๋ก ์๋๋๊ฒ ๋ง๋ค ์ ์๋ค.
Java์์๋ try catch๋ฌธ์ ํตํด ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
์์ธ๋ Checked Exception, Unchecked Exception์ผ๋ก ๋๋ ์ ์๋ค.
Checked Exception ์ฒดํฌ ์์ธ
RuntimeException์ ํ์ ํด๋์ค๊ฐ ์๋๋ฉด์ Exception ํด๋์ค์ ํ์ ํด๋์ค๋ค์ด๋ค.
์ฒดํฌ ์์ธ๋ ๋ฐ๋์ ์๋ฌ ์ฒ๋ฆฌ(try catch๋ฌธ ๋๋ throw)๋ฅผ ํด์ผํ๋ ํน์ง์ ๊ฐ๊ณ ์๋ค.
throws๋ฅผ ๋ถ์ฌ์ผ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค. throws๋ฅผ ์ฌ์ฉํ์ง ์์๋ try catch๋ฌธ์ผ๋ก ์์ธ ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ์ง๋ง ์ด๊ฒ์ ์ถ์ฒํ์ง ์๋๋ค.
Unchecked Exception ์ธ์ฒดํฌ ์์ธ
RuntimeException์ ํ์ ํด๋์ค๋ค์ ์๋ฏธํ๋ค. ๋ง ๊ทธ๋๋ก ์คํ ์ค์ ๋ฐ์ํ ์ ์๋ ์์ธ๋ฅผ ์๋ฏธํ๋ค.
์ฒดํฌ ์์ธ์ ๋ฌ๋ฆฌ ์๋ฌ ์ฒ๋ฆฌ(try catch)๋ฅผ ๊ฐ์ ํ์ง ์๋๋ค. ์ฆ, try catch๋ก ์์ธ๋ฅผ ์ก๊ฑฐ๋ throw๋ก ํธ์ถํ ๋ฉ์๋์๊ฒ ์์ธ๋ฅผ ๋์ง์ง ์๋๋ค.
์ฌ๋ฌ๊ฐ์ง ์์ธ๋ค
| Exception | ๋ฐ์ ์ด์ |
|---|---|
| ArithmeticException | ์ ์๋ฅผ 0์ผ๋ก ๋๋๊ฒฝ์ฐ ๋ฐ์ |
| ArrayIndexOutOfBoundsExcetion | ๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋ index๋ฅผ ์ ๊ทผํ ์ ๋ฐ์ |
| ClassCastExcetion | ๋ณํํ ์ ์๋ ํ์ ์ผ๋ก ๊ฐ์ฒด๋ฅผ ๋ฐํ ์ ๋ฐ์ |
| NullPointException | ์กด์ฌํ์ง ์๋ ๋ ํผ๋ฐ์ค๋ฅผ ์ฐธ์กฐํ ๋ ๋ฐ์ |
| IllegalArgumentException | ์๋ชป๋ ์ธ์๋ฅผ ์ ๋ฌ ํ ๋ ๋ฐ์ |
| IOException์ ์ถ๋ ฅ ๋์ ์คํจ ๋๋ ์ธํฐ๋ฝํธ ์ ๋ฐ์ | ย |
| OutOfMemoryException | ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ ๊ฒฝ์ฐ ๋ฐ์ |
| NumberFormatException | ๋ฌธ์์ด์ด ๋ํ๋ด๋ ์ซ์์ ์ผ์นํ์ง ์๋ ํ์ ์ ์ซ์๋ก ๋ณํ์ ๋ฐ์ |
try catch๋ฌธ (์์ธ์ฒ๋ฆฌ)
๊ธฐ๋ณธ ๊ตฌ์ฑ
try {}: ์์ธ๊ฐ ๋ฐ์๋๋ ์์ญcatch(e) {}: ๋ฐ์๋๋ ์์ธ๋ฅผ ์ก์ ์ฒ๋ฆฌํ๋ ์์ญ- ๋ชจ๋ ์์ธ์ ๋ถ๋ชจ๋ Exception์ด๊ธฐ ๋๋ฌธ์ ๋ฑํ ์ฒ๋ฆฌํ ํ์๋ ์์ง๋ง ์์ธ๋ฅผ ์ก์์ผํ๋ ๊ฒฝ์ฐ์ ๋ง์ง๋ง catch์
Exception e๋ฅผ ํตํด ๋ชจ๋ ์์ธ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค. - ์์ฃผ ์ฌ์ฉ๋๋ ๋ฉ์๋
e.getMessage(): ๋ฐ์ํ ์์ธ ํด๋์ค์ ์ธ์คํด์ค์ ์ ์ฅ๋ ๋ฉ์ธ์ง๋ฅผ ์ป์ ์ ์์. ๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ๋ง ์ ์ ์์ด์ ์์ธํ์ง ์๋ค.e.printStackTrace(): ๋ฐ์ํ ์์ธ ํด๋์ค์ ๊ฐ์ฅ ์์ธํ ์์ธ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.
- ๋ชจ๋ ์์ธ์ ๋ถ๋ชจ๋ Exception์ด๊ธฐ ๋๋ฌธ์ ๋ฑํ ์ฒ๋ฆฌํ ํ์๋ ์์ง๋ง ์์ธ๋ฅผ ์ก์์ผํ๋ ๊ฒฝ์ฐ์ ๋ง์ง๋ง catch์
finally {}: ์์ธ ๋ฐ์ ์ฌ๋ถ์ ๊ด๊ณ ์์ด ๋ฌด์กฐ๊ฑด ์คํ๋๋ ์์ญ- ์ ํ์ ์ผ๋ก ์ฌ์ฉํ๋ค.
- ์์์ ํด์ ํ๋ ์ฉ๋๋ก ์ฌ์ฉ๋๋ค.
catch๋ค์ ๋ถ์ด๊ฑฐ๋try๋ค์ ๋ถ์ผ ์ ์๋ค.
try {
// ์์ธ๊ฐ ๋ฐ์๋๋ ์์ญ
} catch (Exception e) {
// ๋ฐ์๋ ์์ธ๋ฅผ ์ก์ ์ฒ๋ฆฌํ๋ ์์ญ
System.out.println(e.getMessage()); // ๋ฐ์ํ ์์ธ์ ๊ธฐ๋ณธ ์ ๋ณด ์ถ๋ ฅ
e.printStackTrace(); // ๋ฐ์ํ ์์ธ์ ์์ธํ ์ ๋ณด ์ถ๋ ฅ
} finally {
// ์์ธ ๋ฐ์๊ณผ ๊ด๊ณ ์์ด ๋ฌด์กฐ๊ฑด ์คํ
}
๋ค๋ฅธ ์์ธ์ฒ๋ฆฌ ๋ฐฉ๋ฒ : throw, throws
throw: ์์ธ ๊ฐ์ฒด๋ฅผ ๊ณ ์๋ก ๋ฐ์์ํฌ ๋ ์ฌ์ฉํ๋ ํค์๋- ์ต์ง๋ก ์๋ฌ๋ฅผ ๋ฐ์์ํฌ ๋๋ ์ฌ์ฉ๋์ง๋ง ํ์ฌ ๋ฉ์๋์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ ํ์ ์์ ๋ฉ์๋์ ์๋ฌ ์ ๋ณด๋ฅผ ์ค์ผ๋ก ์์ ๋ฉ์๋์์๋ ์๋ฌ๊ฐ ๋ฐ์์ใด ๊ฒ์ ๊ฐ์งํ ์ ์๋ค.
throws: ๋ฉ์๋์์ ๋ฐ์๋๋ ์์ธ๋ฅผ ์์ ์ ํธ์ถํ ์์ ๋ฉ์๋๋ก ์์ธ๋ฅผ ๋ณด๋ด์ค๋ค.(์์ธ๋ฅผ ์ ๊ฐํ๋ค.)- ์์ ๋ฉ์๋์์ try catch๋ฌธ์ ํตํด ์์ธ์ฒ๋ฆฌ
if (x == null) {
throw new NullPointerException();
}
