๐ก ์์ธ ์ฒ๋ฆฌ Exception
๊ฐ๋ฐ์๊ฐ ์๋ํ์ง ์์ ์ํฉ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ก ํ๋ก๊ทธ๋จ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ค.
์์ธ๊ฐ ๋ฐ์ํ ์์น๋ถํฐ ์๋์ชฝ์ ์ฝ๋๋ค์ ์คํ๋์ง ๋ชปํ๋ค.
์ค๋ฅ (Error)์ ๋ฌ๋ฆฌ ์ฌ๊ฐ๋๊ฐ ๋ฎ์ผ๋ฉฐ, ์์ธ ์ฒ๋ฆฌ (Exception Handling) ์ ํตํด ์์ธ ๋ฐ์ ์,
ํด๊ฒฐ์ฑ ์ ๊ธฐ์ ํ์ฌ ๋น์ ์์ ์ธ ์ข ๋ฃ๋ฅผ ๋ง์ ์ ์๋ค.
์์ธ ์ฒ๋ฆฌ๋ฅผ ์ํด try - cath ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ๋ค.
์์ธ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ์์๋๋ ์ฝ๋๋ค์ try ๋ธ๋ก ๋ด์ ๊ธฐ์ ํ๊ณ ,
์์ธ๊ฐ ๋ฐ์ํ๋ฉด JVM์ ์ํด ํด๋น ์์ธ ๊ฐ์ฒด๋ฅผ ์ ๋ฌ ๋ฐ์ catch ๋ธ๋ก ์ค ์ผ์นํ๋ ํ์ ์ ๋ํ ๋ธ๋ก์ ์คํํ์ฌ
์์ธ๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
๋ง์ฝ, ์ผ์นํ๋ catch ๋ธ๋ก์ด ์์ ๊ฒฝ์ฐ, ํ๋ก๊ทธ๋จ์ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ค.
< Exception ํด๋์ค ๋ฐ ํ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์์ธ ์ฒ๋ฆฌ >
์ปดํ์ผ ์์ ์์ ์์ธ ๋ฐ์ ์ฌ๋ถ๋ฅผ ์ฒดํฌํ๋ Compile Checked Exception
์คํ ์์ ์์ ์์ธ ๋ฐ์ ์ฌ๋ถ๋ฅผ ์ ์ ์๋ Compile Unchecked Exception
Compile Checked Exception ๊ณ์ด | |
IOException | SQLException ๋ฑ |
Compile Unchecked Exception ๊ณ์ด | |
RuntimeException ๋ฑ => ArrayIndexOutOfBoundsException, NullPointExcepton) |
< ์์ธ ์ฒ๋ฆฌ ๊ธฐ๋ณธ ๋ฌธ๋ฒ >
try {
//์์ธ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ์์๋๋ ๋ฒ์์ ์ฝ๋๋ค...
//=> ์์ธ ๋ฐ์ ์ฝ๋ ์๋์ชฝ ๋๋จธ์ง ์ฝ๋๋ค์ ์คํ๋์ง ๋ชปํ๋ค.
} catch(์์ธํด๋์ค๋ช
1 ๋ณ์๋ช
) {
//์์ธ ํด๋์ค1์ ํด๋นํ๋ ์์ธ ๋ฐ์ ์ ์ฒ๋ฆฌํ ์ฝ๋๋ค..
} catch(์์ธํด๋์ค๋ช
n ๋ณ์๋ช
) {
//์์ธ ํด๋์คn์ ํด๋นํ๋ ์์ธ ๋ฐ์ ์ ์ฒ๋ฆฌํ ์ฝ๋๋ค..
} finally {
//์์ธ ๋ฐ์ ์ฌ๋ถ์ ๊ด๊ณ์์ด ๋ฌด์กฐ๊ฑด ์คํํ ๋ฌธ์ฅ๋ค...
//ex) DB ์์ ๋ฐํ, I/O ์์ ๋ฐํ ๋ฑ
}
Error!
int num = 0;
System.out.println(3/num);
๋๋์ ์ฐ์ฐ์ ํผ์ฐ์ฐ์๊ฐ 0์ธ ๊ฒฝ์ฐ ArithmeticException ์์ธ ๋ฐ์
=> java.lang.ArithmeticException : by zero
0์ ์ํ ๋๋์ ์ผ๋ก ์ธํด ์์ธ ๋ฐ์ํ๋ค๋ ๋ฉ์ธ์ง.
<์์ธ ์ฒ๋ฆฌ>
try {
//์์ธ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ์์๋๋ ์ฝ๋
int num = 0;
System.out.println(3/num);
//๋ง์ฝ ์ด ์ง์ ์์ ์์ธ ๋ฐ์ ์ ๋๋จธ์ง try ๋ธ๋ก์ ์ฝ๋๋ค์ ์คํx
๋ฐ๋ก catch ๋ฌธ์ผ๋ก ์ด๋ํ๋ค.
}catch() {
// ArithmeticException ์์ธ๊ฐ ๋ฐ์ํ์ ๊ฒฝ์ฐ ์ฒ๋ฆฌํ ์ฝ๋๋ค ๊ธฐ์
// ์์ธ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒฝ์ฐ ์ด ๋ธ๋ก์ ์คํ๋์ง ์๋๋ค.
e.printStackTrace(); //์์ธ ํด๋์ค, ๋ฐ์ ์์น, ์์ธ ๋ฑ์ ์์ธํ ์ถ๋ ฅ
}
}
Error!
int[] arr = {1, 2, 3};
System.out.println(arr[5]);
๋ฐฐ์ด์ ์กด์ฌํ์ง ์๋ ์ธ๋ฑ์ค ์ ๊ทผ ์ ArrayIndexOutBoundsException ๋ฐ์
๐ก java_util_package
java.util ํจํค์ง | Random ํด๋์ค |
๋ค์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ ํธ๋ฆฌํฐ ํด๋์ค๋ค์ ๋ชจ์ ๋์ ์์ฑ, ๋ ์ง ๋ฐ ์๊ฐ ๊ด๋ฆฌ, ์๋ฃ๊ตฌ์กฐ ๋ฑ |
๋์ ๋ฐ์ ๊ธฐ๋ฅ ์ ์ฉ ํด๋์ค static ๋ฉ์๋๊ฐ ์๋ ์ผ๋ฐ ๋ฉ์๋ ํํ๋ก ์ ๊ณตํ๋ฏ๋ก ์ธ์คํด์ค ์์ฑ ํ์ ์ ์๋ฟ๋ง ์๋๋ผ ๋ค์ํ ํ์ ์ ๋์ ์ ๊ณต => nextXXX() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๊ฐ ๊ธฐ๋ณธ ๋ฐ์ดํฐํ์ ๋์ ๋ฐ์ => ํนํ, nextInt() ๋ฉ์๋๋ฅผ ํตํด ์ ์ํ ๊ณผ์ ์์ด ์ ์ํ ๋์ ๋ฐ์ |
Random ํด๋์ค์ ์ธ์คํด์ค ์์ฑ
Random r = new Random();
for(int i = 1; i <= 10; i++) {
// nextInt() ๋ฉ์๋ : intํ ๋ฒ์(-21์ต ~ +21์ต) ๋์ ๋ฐ์
// System.out.println("intํ ๋ฒ์์ ๋์ : " + r.nextInt());
// nextDouble() ๋ฉ์๋ : double ํ ๋ฒ์ ๋์ ๋ฐ์
// => Math.random() ๋ฉ์๋์ ๋์ผํ ๊ฒฐ๊ณผ
// System.out.println("doubleํ ๋ฒ์์ ๋์ : " + r.nextDouble());
// nextBoolean() ๋ฉ์๋ : true ๋๋ false ๋์ ๋ฐ์
// System.out.println("booleanํ ๋ฒ์์ ๋์ : " + r.nextBoolean());
// nextInt(int) ๋ฉ์๋๋ฅผ ํ์ฉํ์ฌ ์ํ๋ ๋ฒ์์ ๋์ ๋ฐ์
// => ํ๋ผ๋ฏธํฐ๋ก ์ต๋๊ฐ(x) ์ ๋ฌ ์ : 0 ~ x -1 ๋ฒ์์ ๋์ ๋ฐ์
// System.out.println("0 ~ 9 ์ฌ์ด์ ๋์ : " + r.nextInt(10));
// 1 ~ ์ต๋๊ฐ(x) ์ฌ์ด์ ๋์ ๋ฐ์์ ์ํด์๋ nextInt(x) + 1 ํ์
System.out.println("1 ~ 10 ์ฌ์ด์ ๋์ : " + (r.nextInt(10) + 1));
}
'BackEnd > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
1026 JAVA - Enum_type (0) | 2022.10.26 |
---|---|
1024 JAVA - java.util.Random (0) | 2022.10.24 |
1017,19 JAVA - String ๋ฉ์๋ (0) | 2022.10.19 |
1013 JAVA - String ๊ฐ์ฒด (๋ฌธ์์ด) (0) | 2022.10.13 |
1013 JAVA - ์ค๋ธ์ ํธ ํด๋์ค Object Class (equals ๋ฉ์๋) (0) | 2022.10.13 |