본문 바로가기

국비

10.28 국비학원 18일차 (예외처리)

  • 프로그램 오류 : 프로그램 수행 시 치명적 상황이 발생하여 비정상 종료 상황이 발생한 것 = 프로그램 에러

              종류)  1. 컴파일 에러 : 프로그램의 실행을 막는 소스 상의 문법 에러. 

                                                   소스 구문 수정하여 해결 가능

                         2. 런타임 에러 : 입력 값이 틀렸거나, 배열의 인덱스 범위를 벗어났거나, 계산식의 오류 등.

                                                    주로 if 문을 사용하여 에러 처리

                         3. 시스템 에러 : 컴퓨터 오작동으로 인한 에러. 소스 구문 수정으로 해결 불가

 

  • 예외처리 : 소스 수정으로 해결 가능한 에러를 예외(Exception) 라고 하는데 이러한 예외 상황(예측 가능한 에러)                            구문을 처리하는 방법. 모든 예외의 최고 조상은 Exception 클래스이다.                  반드시 예외 처리해야 하는 Checked Exception 과 해주지 않아도 되는 Unchecked Exception 으로 나뉨
  • 종류 : ArithmeticException : 0 으로 나누는 경우 발생. if문으로 나누는 수가 0인지 검사로 해결          ArrayIndexOutOfBoundsException : 배열의 index 범위를 넘어서 참조하는 경우.                                                           배열명.length를 사용해 범위 확인하여 해결           NegativaArraySizeException : 배열 크기를 음수로 지정한 경우 발생. 크기를 0보다 크게 지정해야 함          ClassCastException : Cast연산자 사용시 타입오류. instanceof 연산자로 객체타입 확인 후 cast연산          NullPointerException : Null인 참조 변수로 객체 멤버 참조 시도 시 발생. 객체 사용 전, 참조변수가 null인지 확인                       ( 여기 쓴 종류들은 RuntimeException 클래스 후손 클래스 종류 몇가지를 소개한 것 )
  • 예외처리 방법

         - throws : 일명 예외처리 미루기. 메서드 선언시 throws ExceptionName 문을 추가하여 호출한 상위 메서드에 처리                             위임. 이게 반복되어 계속 위임하면 main()메서드까지 위임하게 되어 거기서도 처리되지 않으면 에러 뜸

         - try ~ catch 문 : try 구문에 exception 발생할 가능성이 있는 코드를 안에 기술한다.

                                   catch 구문에 위에 기술한 발생 가능성 있는 exception 에 대한 처리를 기술한다.

                                * finally 문이 있는 경우도 있는데 이는 예외 발생 여부와 관계없이 꼭 처리해야 하는 로직이 기술되                                         어  있다. 중간에 return 문을 만나도 finally 구문은 실행됨.

                                   주로 java.io 나 java.sql 패키지의 메서드 처리 시 이용된다.

 

  • 예외 강제 발생

throw 로 예외 강제 발생
예외 발생시 안내