1. 예외처리 (Exception Handle)
1. 예외 (Exception)
- 예외 (Exception) : 사용자에 의해 프로그램이 잘못 실행되거나 프로그램이 잘못 개발되어 실행될 경우 발생되는 프로그램 오류
- 프로그램 실행시 예외가 발생되면 예외가 발생된 지점에서 프로그램 강제 종료
- 예외가 발생되어 프로그램이 강제로 종료되는 것을 방지하거나 프로그램이 강제로 종료된 이유를 알기 위해 예외처리(Exception Handle)
2. 예외클래스 (Exception Class)
- 예외클래스(Exception Class) : 예외 관련 정보를 저장하기 위한 클래스
=> Exception 클래스를 상속받아 작성된 자식클래스
- 프로그램 실행시 예외가 발생되면 JVM은 해당 예외에 대한 예외클래스로 객체를 생성하여 제공
3. Throwable Class
- Throwable Class : 프로그램에서 발생되는 모든 오류정보를 저장하기 위한 부모클래스
- 자식클래스 : Error 클래스, Exception 클래스
2. 예외의 종류
1. 일반 예외
- 일반 예외 : 프로그램 실행시 예외가 발생될 가능성이 높아 예외처리 하지 않은 경우 컴파일시 에러 발생
- RuntimeException 클래스를 상속받지 않은 클래스로 예외처리
2. 실행 예외
- 실행 예외 : 프로그램 실행시 예외가 발생될 가능성이 낮아 예외처리를 하지 않아도 컴파일시 에러 미발생
- RuntimeException 클래스를 상속받은 자식클래스로 예외처리
- 실행 예외는 예외처리 하지 않은 경우 JVM이 자동으로 예외처리하여 예외 메시지 제공
3. 예외처리 방법
1. try ~ catch
- try ~ catch
=> try 키워드로 생성된 블럭의 명령을 실행할 때 예외가 발생될 경우 JVM이 해당 예외에 대한 예외클래스로 객체 생성
=> try 키워드로 생성된 블럭에서 발생된 예외 관련 객체를 catch 키워드로 설정된 블럭으로 전달하여 참조변수에 저장
=> 참조변수에 저장된 예외 관련 객체의 메소드를 호출하여 예외 처리
=> try 키워드로 생성된 블럭에서 예외가 발생되면 프로그램이 종료되지 않고 catch 키워드의 블럭으로 프로그램의 흐름이 이동하여 예외처리 명령 실행
try {
예외가 발생될 수 있는 명령;
፧
} catch (예외클래스 참조변수) {
예외처리 명령;
፧
} finally {
예외 발생과 상관없이 무조건 실행될 명령;
፧
}
- catch 키워드로 블럭을 여러개 작성 가능
=> 다양한 예외를 구분하여 예외처리 가능
- finally 키워드의 블럭에는 예외 발생과 상관없이 무조건 실행될 명령 작성 (생략 가능)
2. throws
- throws : 예외가 발생된 명령의 메소드에서 예외처리를 하지 않고 발생된 예외를 메소드를 호출한 명령으로 전달 가능
접근제한자 반환형 메소드명(자료형 매개변수, ...) throws 예외클래스, 예외클래스, ...{
}
- 예외가 발생되어 전달되는 메소드를 호출한 명령에서 해당 예외를 처리하는 것을 권장
3. 예외 처리 관련 메소드
- Throwable.getMessage() : 예외 객체에 저장된 예외 메시지를 반환하는 메소드
- Throwable.printStackTrace() : 예외가 발생된 경로를 역추적하여 발생된 정보를 제공받아 출력하는 메소드