Post

예외 클래스

예외 클래스

예외란 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 발생하는 프로그램의 오류로 예외 처리 프로그램을 통해 정상 실행 상태 유지 가능하고 예외 발생 가능성이 높은 코드를 컴파일 할때 예외 처리를 통해 예외 유무 확인 가능하다

자바에서는 예외를 클래스로 관리한다

일반 예외

컴파일 하는 과정에서 예외처리코드가 필요한지 검사 예외 처리 코드가 없다면 예외가 발생된다

 

실행 예외

컴파일 과정에서 예외 처리 코드를 검사하지 않는 예외를 말함 개발자의 경험을 통해 예외처리 코드를 넣어야 한다

  • NullPointerException
    • java.lang.NullPointerException 객체 참조가 없는 상태의 참조 변수로 객체 접근 연산자 도트 사용할 경우 발생
  • ArrayIndexOutOfBoundsException
    • java.lang.ArrayIndexOutOfBoundsException 배열에서 인덱스 범위를 초과 할 경우
  • NumberFormatException
    • java.lang.NumberFormatException 문자열을 숫자로 변환할 때 변경 불가능한 문자가 있는 경우
  • ClassCastException 상위 및 하위 관계가 아닌 경우 발생한다 instanceof 필요

 

예외 처리 코드

try-catch-finally 블록

생성자 및 메소드 내부에서 작성되어 일반예외와 실행예외가 발생할 경우 예외 처리가 가능하게 함

1
2
3
4
5
6
7
try{
  //예외가 발생 가능한 코드 작성
} catch(예외 클래스 e) {
  //해당 예외가 발생할 경우 실행할 코드
} finally {
  // 항상 실행할 코드
}

e예외 클래스가 발생한경우 try -> catch -> finally 순서 실행된다

예외가 발생하지 않는다면 try -> finally 순서 실행된다

 

다중 catch

catch(예외 클래스 e ) 를 발생할 예외에 따라 다중 작성한다 try에서 해당 타입의 예외가 발생하면 그 catch블록을 실행한다

다중 catch를 작성할 때 상위 에외 클래스가 하위 에외 클래스보다 아래 위치 해야한다 아니면 상위 예외 클래스의 catch만 실행된다

 

throws 키워드

메소드 선언부 끝에 작성되어 메소드에서 처리하지 않은 예외를 호출한 곳으로 넘기는 역할 예외를 미뤄서 처리한다

1
2
3
4
5
6
7
8
9
10
11
public void method1() {
  try {
    method2();
  } catch (ClassNotFoundException e) {
    System.out.println("클래스가 존재하지 않습니다");
  }
}

public void method2() throws ClassNotFoundException {
  Class clazz = Class.forName("java.lang");
}

 

throw 키워드

throw new Exception();을 통해서 항상 이부분에서 exception에러 발생

This post is licensed under CC BY 4.0 by the author.