728x90
반응형

<오늘의 학습>

1. 창 종료

2. 이미지 출력

3. 대화창 만들기

4. 예외 처리

 

 

4. 예외 처리

  1. 에러 : 프로그램 언어의 문법적인 오류.
  2. exception(예외) : 프로그램을 실행하는 동안 예기치 않은 이상 상태(예외 상황)가 발생하는 것.
  3. throws : 예외가 발생했을 때, 메서드를 호출한 곳으로 제어권을 넘긴다.
  4. 예외는 프로그램이 실행되는동안 문제가 발생했을 때 대처할 수 있게 처리한다.
  5. 예외 클래스 계층 구조

    Throwable

    Exception

    IOException
    FileNotFoundException
    ClassNotFoundException : DB작업을 할 때 필수로 사용해야 한다.

    ArrayIndexOutOfBoundsException : 배열 예외 발생
    NumberFormatException : 숫자가 아닐 때 예외 발생
    ArithmeticException : 연산 예외 3/0

 

▶ 예외 처리 2가지 방법

  1.  직접 처리

    try{
         처리문;
         처리문;
         처리문;
    } catch(예외 종류1){
         //처리:메시지 출력
    } catch(예외 종류2){
         //처리:메시지 출력
    } finally {
         처리내용; //db.close();
    }


  2. 간접 처리
    public 리턴형 메서드() throws 예외종류{
         처리문;
         처리문;
         처리문;
    }


  3.  메서드 내용을 처리하는 동안 예외가 발생하면 메서드를 호출한 곳으로 제어권을 넘긴다.
    ex) public static void main(String ags[]) throws Exception {
         처리문
         처리문
    }

 

※finally: 예외 발생과 상관없이 실행된다
   앞에 return문이 있어도 finally절은 수행하지만, 앞에 System.exit(0) 구문이 있으면 finally절은 수행하지 않는다.

 

 

 

예외 처리

▶ Run - Run Configurations... - Arguments 에서 값을 바꾸며 예외 처리 확인 가능

  1. 실행 : 배열에러 발생 ->e1
  2. 배열 값을 숫자로 입력하고 실행
  3. 배열 값을 입력하지 않고 실행 ->e2
  4. 문자 a를 입력하고 실행 ->e2
  5. 숫자 입력. 수식 변경(연산 에러)

 

▷ 홀수 값 출력

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
반응형

+ Recent posts