[자바(Java)] 예외처리 (Exception Handle)

방용환·2023년 4월 13일
0
post-thumbnail

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() : 예외가 발생된 경로를 역추적하여 발생된 정보를 제공받아 출력하는 메소드

0개의 댓글