728x90
반응형
<오늘의 학습>
1. 창 종료
2. 이미지 출력
3. 대화창 만들기
4. 예외 처리
4. 예외 처리
- 에러 : 프로그램 언어의 문법적인 오류.
- exception(예외) : 프로그램을 실행하는 동안 예기치 않은 이상 상태(예외 상황)가 발생하는 것.
- throws : 예외가 발생했을 때, 메서드를 호출한 곳으로 제어권을 넘긴다.
- 예외는 프로그램이 실행되는동안 문제가 발생했을 때 대처할 수 있게 처리한다.
- 예외 클래스 계층 구조
Throwable
↑
Exception
↑
IOException
FileNotFoundException
ClassNotFoundException : DB작업을 할 때 필수로 사용해야 한다.
ArrayIndexOutOfBoundsException : 배열 예외 발생
NumberFormatException : 숫자가 아닐 때 예외 발생
ArithmeticException : 연산 예외 3/0
▶ 예외 처리 2가지 방법
- 직접 처리
try{
처리문;
처리문;
처리문;
} catch(예외 종류1){
//처리:메시지 출력
} catch(예외 종류2){
//처리:메시지 출력
} finally {
처리내용; //db.close();
} - 간접 처리
public 리턴형 메서드() throws 예외종류{
처리문;
처리문;
처리문;
} - 메서드 내용을 처리하는 동안 예외가 발생하면 메서드를 호출한 곳으로 제어권을 넘긴다.
ex) public static void main(String ags[]) throws Exception {
처리문
처리문
}
※finally: 예외 발생과 상관없이 실행된다
앞에 return문이 있어도 finally절은 수행하지만, 앞에 System.exit(0) 구문이 있으면 finally절은 수행하지 않는다.
예외 처리
▶ Run - Run Configurations... - Arguments 에서 값을 바꾸며 예외 처리 확인 가능
- 실행 : 배열에러 발생 ->e1
- 배열 값을 숫자로 입력하고 실행
- 배열 값을 입력하지 않고 실행 ->e2
- 문자 a를 입력하고 실행 ->e2
- 숫자 입력. 수식 변경(연산 에러)
▷ 홀수 값 출력
public static void main(String[] args) {
//직접 처리
try{
int num=Integer.parseInt(args[0]);
if(num%2==0){ //짝수일 때
System.out.println(num+"은 짝수이다.");
}else{
System.out.println(num+"은 홀수이다.");
}
}catch(ArrayIndexOutOfBoundsException e1){
System.out.println("배열 에러:"+e1);
}catch(NumberFormatException e2){
System.out.println("숫자를 입력하세요:"+e2);
}catch(ArithmeticException e3){
System.out.println("연산 예외:"+e3);
}finally{
System.out.println("예외 발생과 상관없이 실행된다.");
}
}//main_end
배열 에러:java.lang.ArrayIndexOutOfBoundsException: 0
예외 발생과 상관없이 실행된다
▷ 홀수 값 출력
Program argument 값에 77을 입력하고 디버그
77은 홀수이다.
예외 발생과 상관없이 실행된다
▷ 연산 예외 출력
try문에 if문 연산 값 변경
if(num%0==0){ //Arguments에 숫자를 넣으면 연산 예외
System.out.println(num+"은 짝수이다.");
}else{
System.out.println(num+"은 홀수이다.");
}
연산 예외:java.lang.ArithmeticException: / by zero
예외 발생과 상관없이 실행된다
2023년 5월 24일 수요일
<9일차 수업 후기>
오늘은 Frame과 예외 처리에 대한 실습 위주의 수업을 했다. 예외 처리는 직관적인 이름을 가지고 있지만 길이가 길고 자주 사용해 보지 않아서 익숙하지는 않은 것 같다.
9일 동안 모든 내용을 자세하게 수업한 것은 아니지만, 한 번씩 내용을 훑어보면서 내가 어려워하는 부분과 잘하는 부분을 확실히 알 수 있는 시간이었다.
10일차 수업부터는 다른 강사님께서 JAVA 수업을 다시 해주시는데, 그 기간 동안 내가 부족한 부분인 인터페이스나 예외 처리 위주로 공부를 해야겠다.
728x90
반응형
'HRD_훈련 > JAVA' 카테고리의 다른 글
[JAVA] 배열과 정렬 실습 (11일차) (0) | 2023.05.28 |
---|---|
[JAVA] 반복문과 배열, 랜덤 함수 실습 (10일차) (0) | 2023.05.25 |
[JAVA] AWT와 프레임 출력 (9일차) (0) | 2023.05.24 |
[JAVA] 추상 클래스와 인터페이스 (8일차) (0) | 2023.05.23 |
[JAVA] 생성자와 상속 (7일차) (0) | 2023.05.22 |