그동안, 예외를 만난 경험이 있다.
=> 원인을 분석 하고, 해결방안을 찾고 해결 했다.
코딩 자체에는 문제가 없지만 (문법에 이상이 없거나 등)
"실행시" 발생하는 문제
==
"예외" 라고 한다.
예외 처리를 하면 좋은점 :
1. 프로그램이 비정상적으로 종료되는것을 막을 수 있다.
2. 예외가 발생되면서 커질 수 있는 피해들을 최소화 하는것이 목표 !
사용방법 :
try {
실행시 예외가 발생할수도 있는 코드
예외가 발생되면, "즉시" catch문으로 이동.
}
catch (예외클래스 e) {
해당 예외클래스의 문제가 발생되면 이곳의 코드를 수행
}
finally {
예외 발생 여부와 무관하게 항상 수행되는 코드.
통신을 위해 확보해둔 모든 연결스트림을 해제 한다.
}
예시)

1. int형 타입의 배열을 3칸짜리로 생성.
2.
data[0] = 1;
data[1] = 2;
data[2] = 3;
3.
배열은 0번째 1번째 2번째 까지만 존재하므로,
data[3] 배열은 존재 하지 않는다.
하지만, 빨강색 밑줄이 쳐있지는 않다.
문법상에는 이상이 없기 때문이다.
컴퓨터는 실행을 하기 전까지는 모르고,
실행을 하고나서 발생하는 문제를 "예외" 라고 한다.
4.
예외가 발생할 수 있는 코드를 try 문에 넣기.
sysout(data[3])
5.
catch(ArrayIndexOutOfBoundsException e) {
(예외클래스의 문제가 발생하면 중괄호 안의 코드가 실행된다)
sysout(없는 인덱스)
}
예시 2)

일때,

1. 확인용 출력문
2. a / b
3. 확인용 출력문

확인 1만 출력되고,
10 / 0 이랑, 확인 2는 출력이 되지 않은 것을 볼 수 있다.
이유 :
divide by zero. (0으로는 나눌 수 없어) (b가 0이라서 생기는 이슈)
그래서,

ArithemeticException 을 넣어,
catch 문에
위와 같이 넣게 되면,
try 문에서 a / b가 예외처리가 되면서,
catch문으로 넘어오게 되고,
확인 3이 출력되고,
a / 1은 10이므로 10이 출력,
이상이 없으니,
확인 4도 출력되는 모습을 볼 수 있다.

만약 catch 문에도 예외가 발생할만한 코드를 넣으면
실행시 예외가 발생하게 된다.
'Java (국비) > Java 이론' 카테고리의 다른 글
스레드 (Thread) 간단 정리 2 (0) | 2023.05.22 |
---|---|
스레드 (Thread) 간단 정리 (1) | 2023.05.22 |
컬렉션 프레임워크 (집합 (Set)) (0) | 2023.05.19 |
컬렉션 프레임워크 (배열리스트 (ArrayList)) (0) | 2023.05.18 |
컬렉션 프레임워크 (0) | 2023.05.18 |