ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Java | Exception 예외
    JAVA/JAVA 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연동시 반드시 예외처리를 해야 한다는 점을 기억해야겠습니다.

    댓글

Designed by Tistory.