JAVA에서는 항상 열 받게 예외가 발생한다. 컴퓨터는 도전 정신이 없어서 이상한 반항을 많이 한다. 예를 들어...
- "아닛! 절 왜 0으로 나눠요!"
- "여기 메모리 넣을 곳이 없는데 숫자를 어떻게 넣어요!"
- "이거 길이 모른다고(Null)이라 해놓고 왜 길이 얼만지 물어봐요?!"
이런 질문을 하는 것으로 보아 컴퓨터는 미필임에 분명하다. 해보려고 하지도 않고... 따라서 이러한 컴퓨터가 이상하다는 낌새를 채고 "오류다!"라고 생각할 때 즉시 대처할 수 있는 방안을 개발자들은 개발해냈다. 바로 Try-Catch-Finally 구문이다!
Try 속에서 오류가 발생한다면?
Catch에서 그 오류에 대한 대처를 하고
Finally로 Try-Catch를 끝내고 무조건 실행한다.
Try - Catch - Finally 예시 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
public static void main(String[] args) {
//오류일 때
try {
System.out.println(" *** Start Program ***");
//0 divide 에러
int a = 123/0;
//null point exception - 에러
//NullPointerException() - jvm이 오류 객체를 생성하여 인지
//try로 오류 부분 인지
String s = null;
s.length();
//Array Index 에러
int[] arr = new int[4];
arr[4] = 30;
System.out.println("===============");
System.out.println("Error Not Found");
System.out.println("===============");
}
//에러가 발생 시 에러를 무시하고 캐치 밑 구문 실행
//Null 관련 오류는 여기서 무시 후 캐치 실행
catch(NullPointerException e1) {
System.out.println("===============");
System.out.println("Error: Null Error");
System.out.println("Reason: " + e1.getMessage());
System.out.println("===============");
}
//ArrayIndex 관련 오류는 여기서 무시 후 캐치 실행
catch(ArrayIndexOutOfBoundsException e2) {
System.out.println("===============");
System.out.println("Error: Bad Index");
System.out.println("Reason: " + e2.getMessage());
System.out.println("===============");
}
//나머지 모든 에러 관련 오류는 여기서 무시 후 캐치 실행
catch(Exception e3) {
System.out.println("===============");
System.out.println("Error: Just Error");
System.out.println("Reason: " + e3.getMessage());
System.out.println("===============");
}
//try-catch를 빠져나오며 무조건 실행
finally {
System.out.println("@@@ try-catch 탈출! @@@");
}
//프로그램의 마지막
System.out.println(" *** End Program *** ");
}
|
cs |
그 결과
Try 구문 속에 예외(오류)가 많다면, 가장 먼저 발생한 오류 구문만 Catch로 잡아준다. 예를 들어 위 코드의 결과는 123/0에서 0으로 나누기 에러가 가장 먼저 발생하여 그 에러만 Exception e3으로 잡아준 것이다.
catch(NullPointerException e1)
catch(ArrayIndexOutOfBoundsException e2)
이렇게 에러를 지정해주면 그 에러만 잡지만,
catch(Exception e3)
이렇게 특정 에러가 아닌 발생한 모든 에러를 잡아줄 수도 있다. (e1, e2, e3는 임의로 내가 설정했다.)
위 3가지 결과들은 내가 Try 오류의 순서들을 바꿔주며 실행시킨 결과다. 코린이 관점에서 작성해봤는데 잘 이해가 되었으면 한다. JAVA 기본 중의 기본은 바로 이 예외처리라고 생각한다.
'IT > JAVA' 카테고리의 다른 글
[JAVA] 정규식이란? 자주 사용하는 정규식 (0) | 2021.03.05 |
---|