JAVA/JAVA

Java | Exception 예외

pathas 2020. 2. 5. 17:34

Exception 예외

자바 프로그램의 정상적인 실행을 방해하는 이벤트

자바에서 예외는 예외 이벤트와 그에 대한 정보를 담고 있는 객체임


예제

package j200205;

public class ExceptionTest {

    public static void main(String[] args) {
        String greetings[] = { "객체형변환", "예외처리", "예외처리방법" };
        int i = 0;
        while(i<4) {
            System.out.println(greetings[i]);
            i++;
        }
        
        /*
        객체 형 변환
        예외 처리
        예외 처리 방법
        Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
        at j200205.ExceptionTest.main(ExceptionTest.java:9)
        */
    }

}

※ java.lang.ArrayIndexOutOfBoundsException: 3
greetings 배열에 index 3에 해당하는 요소가 없기 때문에 예외가 발생했다는 메세지

 

※ at j200205.ExceptionTest.main(ExceptionTest.java:9)
ExceptionTest.java의 9번째 줄에 문제가 있다는 메세지


종류

  • RuntimeException: 논리적인 예외, 문법적으로는 문제가 없지만 프로그램이 실행되지 않는 경우
  • non-RuntimeException: 물리적인 예외, 문법에 맞지 않아서 발생하는 예외
    RuntimeException에 해당하지 않는 예외들이 포함됨
    ex) 오타 → 수정 → 컴파일

RuntimeException

Execption 클래스의 하위 클래스인 RuntimeException 클래스


자주 발생하는 예외

런타임 예외 설명
NullPointerException 객체를 생성하지 않고 메소드를 호출하는 경우 발생하는 예외
ArithmeticException 5/0 과 같이 수학적 계산 오류에서 발생하는 예외
ClassCastException 객체 형 변환에서 발생하는 예외
IndexOutOfBoundsException 배열 첨자(index)와 배열 요소 사이에서 발생하는 예외
NumberFormatException 숫자형 인자를 요구하는 매개변수에 숫자형이 아닌 인자가 주어진 경우 발생하는 예외
ex) "5" → 5, "a" X

예외 처리 필수 유무에 따른 예외 종류

  1. Checked Exception: 반드시 예외 처리를 해야 하는 예외
    • 입출력
    • 네트워크
    • DB 연동_JDBC
  2. UnChecked Exception: 예외처리를 하지 않아도 컴파일하는 데에 지장이 없는 예외
    그러나 예외처리를 하는 것이 권장됨

IOException

Execption 클래스의 하위 클래스인 IOException 클래스

  • non-RuntimeException 중에서 가장 많이 발생하는 예외 클래스
  • Checked Exception 이므로 반드시 예외 처리를 해야 함

자바에서 예외란 어떤 것인지 대략적으로 살펴보았습니다.

런타임 예외의 경우 문법적인 실수가 아니기 때문에 자주 발생하는 예외에 대해서는 알아두면 좋을 것 같습니다.

또한 입출력, 네트워크, DB연동시 반드시 예외처리를 해야 한다는 점을 기억해야겠습니다.