Programing_Java
Section#14 _ ์์ธ ์ฒ๋ฆฌ ๋ณธ๋ฌธ
#1 ์๋ฌ(Error)์ ์์ธ(Exception)
: Java๋ ์๋ฌ or ์์ธ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ํด๋์ค๋ก ๊ด๋ฆฌ → ์ปดํ์ผ or ์คํ ์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ํด๋น ๋ฌธ์ ์ ๋ฐ๋ฅธ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑ
#1-1. ์๋ฌ(error)
: ์๋ฌ๋ ๊ฐ๋ฐ์๊ฐ ์์ธกํ๊ฑฐ๋ ์ฒ๋ฆฌํ ์ ์๋ ์์ญ
: ์์คํ ์ ๋น์ ์์ ์ธ ์ํฉ์ด ์๊ฒผ์ ๊ฒฝ์ฐ → ์ธ๋ถ ์์ธ, ํ๋ก๊ทธ๋จ ๊ตฌ๋ ์ค ์น๋ช ์ ์ค๋ฅ
: Ex) ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ, ์ ์ถ๋ ฅ ์๋ฌ, ...
#1-2. ์์ธ(exception)
: ํ๋ก๊ทธ๋จ ๊ตฌ๋ ์ค์ ๋ํ๋๋ ์ค๋ฅ๋ค → ๋ฌธ๋ฒ์ ์ผ๋ก ๋ฌธ์ ๊ฐ ์์ด๋ณด์ฌ๋ ์ค์ ์ด์ ์ค์ ์๊ธฐ๋ ๋ฌธ์ ๋ค
#2 ์์ธ ํด๋์ค
: ์์คํ ์ ๋ฌด์จ ์ด์ ๋ก ์์ธ๊ฐ ๋ฐ์ํ๋์ง ์์ธ ํด๋์ค๋ฅผ ์๋ฌ ๋ฉ์์ง๋ก ์ถ๋ ฅํด์ค
#2-1. NullPointerException
: ๊ฐ์ฅ ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ฉฐ, ์ฐ๋ฆฌ๊ฐ ๋ง์ด ๋ณผ ์์ธ
: ๊ฐ์ฒด๊ฐ ์์ฑ๋์ง ์์ ์ํ์์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๋ฐ์ → ๊ฐ์ฒด๋ ์ ์๋์๋๋ฐ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์์ฑ๋์ง ์์ ๊ฒฝ์ฐ
// NullPointerException ์์
//๋ฐฐ์ด์ ๋ณ์๋ฅผ ์์ฑํ๊ณ ์ ์ธํ์ง ์์
String[] Array = null;
// ์๋ ๋ฐฐ์ด์ ์ถ๋ ฅํ๋ ค๊ณ ํจ
System.out.println("Array[0] = " + Array[0]);
// ๊ฒฐ๊ณผ
NullPointerException ์์ธ ๋ฐ์
#2-2. NumberFormatException
: ์๋ชป๋ ๋ฌธ์์ด์ ์ซ์๋ก ํ ๋ณํํ ๊ฒฝ์ฐ ๋ฐ์
String str01 = "11";
String str02 = "11.11";
// ์ ์ ํํ์ ๋ฌธ์์ด์ ์ ์๋ก ๋ณํ
int num01 = Integer.parseInt(str01);
// ์ค์ ํํ์ ๋ฌธ์์ด์ ์ ์๋ก ๋ณํ
int num02 = Integer.parseInt(str02);
// ๊ฒฐ๊ณผ
num01์ ์ ์ ์ถ๋ ฅ
num02๋ NumberFormatException ์์ธ ๋ฐ์
#2-3. ArrayIndexOutOfBoundsException
: ์ธ๋ฑ์ค ๋ฐฐ์ด์ ์ด๊ณผํด์ ์ฌ์ฉํ ๋ ๋ฐ์
// ๊ธธ์ด๊ฐ 5์ธ ๋ฐฐ์ด ์์ฑ
int[] arr = new int[5];
int[] arr = {1,2,3,4,5};
// 5๋ฒ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ คํจ
System.out.println(arr[6]);
// ๊ฒฐ๊ณผ
ArrayIndexOutOfBoundsException ์์ธ ๋ฐ์
#3 ์์ธ ์ฒ๋ฆฌ ๋ฌธ๋ฒ
#3-1. ์์ธ ์ฒ๋ฆฌ ๊ณผ์
1) ์ฝ๋ ์งํ ์ค ์์ธ๊ฐ ๋ฐ์ํ๋ฉด JVM์ ์๋ฆผ
2) JVM์ ๋ฐ์ํ ์์ธ๋ฅผ ๋ถ์, ์๋ง์ ์์ธ ํด๋์ค ์์ฑ
3) ์์ฑ๋ ์์ธ ๊ฐ์ฒด๋ฅผ ๋ฐ์ํ ์ง์ ์ผ๋ก ๋ณด๋
4) ์์ธ๊ฐ ๋ฐ์ํ ์ง์ ์์ ์ฒ๋ฆฌํ์ง ์์ผ๋ฉด ํ๋ก๊ทธ๋จ์ ๋น์ ์ ์ข ๋ฃ
#3-1. try-catch๋ฌธ
: catch ๋ฉ์๋๋ ์์ธ ํด๋์ค๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌ
try{
// ์์ธ๊ฐ ๋ฐ์ํ ์ ์๋ ์ฝ๋
}
catch(์์ธํด๋์ค๋ช
e){
// ์์ธ ์ฒ๋ฆฌ ์ฝ๋
}
finally{
// ๋ฐ๋์ ์ฒ๋ฆฌํด์ผ ํ๋ ์ฝ๋
}
: ์์ธ๋ฅผ ์ฒ๋ฆฌํ ๋ Exception ํด๋์ค๋ฅผ ์ด์ฉํ๋ฉด ๋ชจ๋ ์์ธ ์ฒ๋ฆฌ ๊ฐ๋ฅ
→ ํ์ง๋ง ์ต์๋จ์ ์ด๋ค๋ฉด ์๋๋ก ๋ด๋ ค๊ฐ๋ฉด์ ํ์ธํ๊ธฐ ๋๋ฌธ์ ๊ทธ ํ์ ์์ธ๋ ์ฒ๋ฆฌํ์ง ์์
#3-3. ๋ค์ค catch ์ฌ์ฉ
: ๋ค์ค catch๋ฌธ์ ์์ธ๋ณ๋ก ์์ธ ์ฒ๋ฆฌ ์ฝ๋๋ฅผ ๋ค๋ฅด๊ฒํ์ฌ ์ฒ๋ฆฌ ๊ฐ๋ฅ: ์์ธ๋ฅผ ๋ค์ค ์ฒ๋ฆฌํ์ฌ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ฉด ์ฝ๋์์ ๋ฐ์ํ๋ ๋ค์ํ ์์ธ ์ฒ๋ฆฌ ๊ฐ๋ฅ → ๋ณด๋ค ์์ ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅ
#3-4. finally
: ์์ธ ๋ฐ์ ์ ๋ฌด์ ์๊ด์์ด ์คํ๋๋ ๊ตฌ๋ฌธ, ์๋ต ๊ฐ๋ฅ: ์์ธ์ ์๊ด์์ด ๋ฐ๋์ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ตฌ๋ฌธ๋ค์ ์์ฑ → ์์ธ๊ฐ ๋ฐ์ํด๋ ์ ์ ์ข ๋ฃ๋์ด์ผ ํ ๊ตฌ๋ฌธ๋ค์์ ์ฌ์ฉ
#4 ์์ธ ๋์ง๊ธฐ
: ๋ฉ์๋ ๋ด๋ถ์์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ์ง ์๊ณ , ํด๋น ๋ฉ์๋๋ฅผ ํธ์ถํ ์ชฝ์์ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๋ฐฉ๋ฒ
: ์์ธ ๋์ง๊ธฐ๋ฅผ ํ๋ ์ด์ → ๋ฉ์๋์์ ๊ฐ๊ฐ ์ฒ๋ฆฌํ ๊ฒฝ์ฐ : ๋ฉ์๋ ์์ฒด์ ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ฑฐ๋, ์ ์ง ๋ณด์ ์ธก๋ฉด์์ ํจ์จ์ด ๋จ์ด์ง ์ ์์
→ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ ์ชฝ์์ ์์ธ๋ฅผ ์ฒ๋ฆฌํด์ฃผ๋ฉด ์์ํด์ง ์ ์์
#4-1 throws ํค์๋
: ๋ฉ์๋ ๋ค์ throws ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋์ง๊ธฐ ํ ์์ธ ๊ฐ์ฒด๋ฅผ ๋ถ์: ์ฌ๋ฌ๊ฐ๋ฅผ ๋์ง ์ ์์ผ๋ฉฐ, ์ฌ๋ฌ๊ฐ๋ฅผ ๋์ง ์ ์ฝค๋ง(,)๋ก ๊ตฌ๋ถํ์ฌ ๋์ด
#4-1-1. ์์ธ ํด๋์ค ์ฌ๋ฌ๊ฐ ๋์ง๊ธฐ
void ๋ฉ์๋๋ช
throws NullPointerException, ClassNotFoundException, ...{}
#4-2 ์์์ ์์ธ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
: ํ๋ก๊ทธ๋จ์ ๊ท์น์ ์๋ฐฐ๋์ด ์์ธ๋ฅผ ๋ฐ์ํด์ผ ํ ๊ฒฝ์ฐ, ์์๋ก ์์ธ๋ฅผ ๋ฐ์์ํฌ ์ ์์
: ๊ฐ๋ฐ์์ ์๋๋ก ์ธํด ๋ฐ์ → ์์น : try-catch๋ฌธ์ ๋ด๋ถ or ์์ธ ๋์ง๊ธฐ๊ฐ ๊ตฌํ๋ ๋ฉ์๋ ์
#5 ์ฌ์ฉ์ ์ ์ ์์ธ ์ฒ๋ฆฌ
: ๋ชฉ์ ์ ๋ฐ๋ผ ๊ณตํต๊ธฐ๋ฅ์ ์ง๋๋ ์์ธ ์ฒ๋ฆฌ๋ ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ์ง์ ์์ธ๋ฅผ ์์ฑํด์ ์ฒ๋ฆฌ
: ์ฌ์ฉ์๊ฐ ๋ง๋ ํด๋์ค์ Exception ๋๋ RuntimeException์ ์์ํ๋ฉด ํด๋น ํด๋์ค๋ฅผ ์์ธ ์ฒ๋ฆฌ ๊ฐ์ฒด๋ก ์ฌ์ฉ ๊ฐ๋ฅ
โบ ์ต์์ ๊ฐ์ฒด Exception ์ ์์ํ ๊ฒฝ์ฐ : ์ฒดํฌ ์์ธ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ
โบ RuntimeException ์ ์์ํ ๊ฒฝ์ฐ : ๋น์ฒดํฌ ์์ธ๋ฅผ ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ
: ์ฌ์ฉ๋ฒ์ ๊ธฐ์กด ์์ธ ๊ฐ์ฒด๋ค๊ณผ ๋์ผ
class InputErrorException extends Exception{}
'๐ MENTOR JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Section#16 _ ์ปฌ๋ ์ ํ๋ ์์ํฌ (0) | 2025.01.23 |
---|---|
Section#15 _ ๊ธฐ๋ณธ API ํด๋์ค (0) | 2025.01.22 |
Section#13 _ ๋ด๋ถ ํด๋์ค (0) | 2025.01.20 |
Section#11 _ ๋คํ์ฑ๊ณผ ํ์ ๋ณํ (1) | 2025.01.18 |
Section#10 _ ์์ (0) | 2025.01.17 |