Try-catch
try? catch? ์์ธ์ฒ๋ฆฌ๋ ๋ญ ํ๋ ๊ฑด๊ฐ์?
ํ๋ก๊ทธ๋๋ฐ ์ค๋ฅ์ ์ข ๋ฅ
์ปดํ์ผ ์ค๋ฅ
: ํ๋ก๊ทธ๋จ์ ์คํ์ ๋ง๋ ์ค๋ฅ, ๋๋ถ๋ถ ๋ฌธ๋ฒ์ ์ธ ์ค๋ฅ๋ค.
//1 (ํค์๋ ๋ง์ถค๋ฒ ์ค๋ฅ)
inet num = 1;
//2 (์ธ๋ฏธ์ฝ๋ก ๋๋ฝ)
boolean a = false
//3 (endif๋ฌธ๋ถํฐ ์ฌ์ฉ)
end if(!a) {
return;
}
//4 (์ ์ธ์๋ ๋ณ์ ์ฌ์ฉ)
b = 3;
๋ฐํ์ ์ค๋ฅ
: ํ๋ก๊ทธ๋จ ์คํ ์ค ๋ฐ์ํ๋ ์ค๋ฅ, ์ํํ ์ ์๋ ์์
์๋์ ๋ฐ์
1. 0์ผ๋ก ๋๋๋ ๊ฒฝ์ฐ
2. ๋ฌดํ๋ฃจํ์ ๋น ์ง๋ ๊ฒฝ์ฐ
3. null point error
๋
ผ๋ฆฌ ์ค๋ฅ
: ์ฌ์ฉ์๊ฐ ์๋ํ ์์
์ ํ๋ก๊ทธ๋จ์์ ์ํํ์ง ๋ชปํ๋ ์ค๋ฅ, ์์ธก ๋ถ๊ฐ๋ฅํ ์ค๋ฅ
try-catch
์ ์ : ์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ตฌ๋ฌธ
์์ธ์ฒ๋ฆฌ : ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์๋ ๋ถ๋ถ์ ์์ธกํ๋ค. try๋ธ๋ก์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด catch๋ก ์ฒ๋ฆฌํ๊ณ ๋ค๋ฅธ ์กฐ์น๋ฅผ ์ทจํ ์ ์๋ค.
๊ตฌ์กฐ
try {
//์์ธ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ์๋ ์ฝ๋
} catch(Exception1 e) {
//Exception1 ๋ฐ์์ ์ฒ๋ฆฌํ ๋ฌธ์ฅ
} catch(Exception2 e2) {
//Exception2 ๋ฐ์์ ์ฒ๋ฆฌํ ๋ฌธ์ฅ
} finally {
//์์ธ๋ฐ์์ฌ๋ถ์ ๊ด๊ณ์์ด ์ํ๋์ด์ผ ํ๋ ๋ฌธ์ฅ
}
finally๋ฌธ → try์ return์ด ์กด์ฌํ๋๋ผ๋ finally ๊ตฌ๋ฌธ์์ ์๋ ๋ช ๋ น์ด๋ ๋ฐ๋์ ์คํํ๋ค.
ํ๋ฆ
์์ธ๊ฐ try ๋ธ๋ญ์์ ๋ฐ์ํ ๊ฒฝ์ฐ
๋ฐ์ํ๋ ์์ธ์ ์ผ์นํ๋ catch๋ฌธ์ด ์๋์ง ํ์ธ
→ ์์ผ๋ฉด catch๋ธ๋ญ ๋ด ๋ฌธ์ฅ ์คํ, ์์ผ๋ฉด ์๋ฌ ๋ฐ์(์๋ฌ๊ฐ ์ฒ๋ฆฌ๋์ง ๋ชปํ๊ธฐ ๋๋ฌธ)
์์ธ๋ฉ์ธ์ง ์ป๋๋ฐฉ๋ฒ
- printStackTrace()
: ์์ธ๋ฐ์ ๋น์์ call stack์ ์๋ ๋ฉ์๋์ ์ ๋ณด์ ์์ธ ๋ฉ์ธ์ง๋ฅผ ์ถ๋ ฅํ๋ค. - getMessage()๊ธฐ๋ณธ์ ์ธ ๋ด์ฉ์ ์ ์ ์์ง๋ง ์์ธํ์ง ์์
: ์์ธํด๋์ค์ ์ธ์คํด์ค์ ์ ์ฅ๋ ๋ฉ์ธ์ง๋ฅผ ์ป์ ์ ์์
์์ธ ๋์ง๊ธฐ
throw e
: ๊ฐ๋ฐ์๊ฐ ๊ณ ์๋ก ๋ฐ์์ํค๋ ์์ธ
try {
Exception e = new Exception("์๋ฌ ๋ฐ์");
throw e;
} catch(Exception e) {
System.out.println("๋ฉ์ธ์ง:" + e.getMessage());
e.printStackTrace();
}
์์ธ ๋์ง๊ธฐ
throw e
: ๊ฐ๋ฐ์๊ฐ ๊ณ ์๋ก ๋ฐ์์ํค๋ ์์ธ
try {
Exception e = new Exception("์๋ฌ ๋ฐ์");
throw e;
} catch(Exception e) {
System.out.println("๋ฉ์ธ์ง:" + e.getMessage());
e.printStackTrace();
}
์์ธ์ ์ฐ์ ์์
์์ธ๋ ์์์ ํตํด ๋ถ๋ชจ-์์ ๊ด๊ณ๊ฐ ์กด์ฌํ๋ค.
๋ถ๋ชจ ์์ธ๊ฐ ์์ ์์ผ๋ฉด ์์ ์์ธ๋ ๋ฐ์ํ ์ ์์.
Exception ์ ArithmeticException, ArrayIndexOutOfBoundsException์ ์กฐ์์ด๊ธฐ ๋๋ฌธ์ ์์์ ๋จผ์ ์กํ์ ์ค๋ฅ๊ฐ ์กํ ์ ์๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
ex) ArithmeticException์ ์์๊ด๊ณ
์ถ์ฒ : https://docs.oracle.com/javase/7/docs/api/java/lang/ArithmeticException.html
Checked Exception vs Unchecked Exception
checked exception :
- ์ปดํ์ผ๋ฌ๊ฐ ํ์ธ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ฒ ๊ฐ์ ์ฝ๋์ ์ปดํ์ผ ์๋ฌ๋ฅผ ๋ฐ์
- ์ธ๋ถ ์์ธ์ ์ํด ๋ฐ์ํ ์ ์๋ Exception
- exception์์ runtime์ ์ ์ธํ ๋๋จธ์ง (ex)IOException : ํ์ผ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ๋ ์์ธ์ ์ธ ์ํฉ ๋ง์ด ๋ฐ์)
IOException์ด ๋ฐ์ํ ์ ์์ผ๋ฏ๋ก ๋ฐ๋์ ์์ธ์ฒ๋ฆฌ๋ฅผ ํด์ค์ผํ๋ค๋ ์๋ฌ ๋ฐ์
- ๋ฐ๋์ ์์ธ์ ๋ํ ์กฐ์น(throws, catch)๋ฅผ ํตํด ์ฒ๋ฆฌํด์ค์ผํจ
unchecked exception :
- RuntimeException์ ์์ํ๋ ํด๋์ค
- ๋ช ์์ ์ธ ์์ธ์ฒ๋ฆฌ๋ฅผ ๊ฐ์ ํ์ง๋ ์์(์ปดํ์ผ์๋ฌ ๋ฐ์ X)
- ๋ด๋ถ ์์ธ์ ์ํด ๋ฐ์ํ ์ ์๋ Exception
- ๋ฐํ์์์ ์๋ฌ๋ฅผ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ ๋จ๊ณ์์ ๋ฏธ๋ฆฌ ์์ธ๋ฅผ ์ฒดํฌํ ์ ์๋ค.
- ex) ArithmeticException, IndexOutOfBoundsException
'๐ค study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ObjectMapper๋? | ์ง๋ ฌํ, ์ญ์ง๋ ฌํ | Jackson ๋ผ์ด๋ธ๋ฌ๋ฆฌ | Serialize, Deserialize | Json Parsing (0) | 2022.07.28 |
---|---|
[Java] length, size()์ ์ฐจ์ด (0) | 2022.02.19 |
[Java] HashMap์ ๋ฆฌ (0) | 2022.02.15 |
[Java] ์ ๊ท์ ์ ๋ฆฌ (0) | 2022.02.02 |
[Java] ArrayList<Integer>๋ฅผ int[]๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ (0) | 2022.01.28 |