2022. 12. 1. 11:33ㆍ코딩배움일지/JAVA
예외란?
오류Error 는 시스템에 비정상적인 상황이 생겼을 때 발생한다. 이는 시스템 레벨에서 발생하기 때문에 심각한 수준의 오류이다.따라서 개발자가 미리 예측하여 처리 할 수 없기때문에, 애플리케이션에서 오류에 대한 처리를 신경 쓰지 않아도 된다.
오류Error 가 시스템 레벨에서 발생한다면, 예외 (Exception) 는 개발자가 구현한 로직에서 발생한다. 즉, 예외는 발생할 상황을 미리 예측하여 처리할 수 있다. 즉 에외는 개발자가 처리할 수 있기 때문에 예외를 구분하고 그에 따른 처리방법을 명확히 알고 적용하는 것이 중요하다.
예외클래스 하위에 RuntimeException
Checked Exception
◽ CheckedException은 반드시 예외 처리해야 하며, 컴파일 시점에서 예외 발생이 확인된다.
◽ CheckedException은 Error와 RuntimeException을 상속하지 않은 예외들을 모두 포함한다.
◽ Error, FileNotFoundException, ClassNotFoundException 등이 대표적이다.
◽ 스프링 프레임워크에서 CheckedException은 트랜젝션 처리 시에 예외가 발생해도 롤백하지 않는다.
Unchecked Exception - RuntimeException
◽ UncheckedException은 명시적으로 예외 처리할 필요가 없으며, 런타임 시점에서 예외 발생이 확인된다.
◽ UncheckedException은 RuntimeException을 상속받는 예외들을 포함한다.
◽ NullPointerException, ClassCastException 등이 대표적이다.
◽ 스프링 프레임워크에서 UncheckedException은 트랜젝션 처리시에 예외가 발생한 경우 롤백을 수행한다.
RuntimeException을 상속하지 않는 클래스는 Checked Exception로 분류할 수 있고,
RuntimeException을 상속하는 클래스는 Unchecked Exception으로 분류할 수 있다.
컴파일 이전
컴파일 이후
public class ArrayException {
public static void main(String[] args) {
Integer[] numberArray = new Integer[] {1,2,3,4,5};
for(int i = 0; i<6; i ++) {
System.out.println(numberArray[i]);
}
System.out.println("프로그램 정상 종료");
}
}
1
2
3
4
5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
at j18_예외.ArrayException.main(ArrayException.java:9)
public class ArrayException {
public static void main(String[] args) {
Integer[] numberArray = new Integer[] {1,2,3,4,5};
try {
/*예외가 예상되는 부분*/
for(int i = 0; i<6; i ++) {
System.out.println(numberArray[i]);
}
} catch (ArrayIndexOutOfBoundsException e) { /*예상되는 예외부분을 받는다. 매개변수 e 에 대입한다.*/
System.out.println(e); /*예외 메세지*/ /*java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5*/
e.printStackTrace(); /*예외의 문제점, *//*어디에서 나왔는 지 알려줌*/
/*java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
at j18_예외.ArrayException.main(ArrayException.java:11)*/
System.out.println(e.getMessage()); /*Index 5 out of bounds for length 5*/
System.out.println("예외가 생성됨");
}
System.out.println("프로그램 정상 종료");
}
}
1
2
3
4
5
java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5
at j18_예외.ArrayException.main(ArrayException.java:11)
Index 5 out of bounds for length 5
예외가 생성됨
프로그램 정상 종료
'코딩배움일지 > JAVA' 카테고리의 다른 글
Java 16일차 3-2(예외처리) (0) | 2022.12.01 |
---|---|
Java 16일차 3-1(예외처리) (0) | 2022.12.01 |
Java 16일차 2(JSON) (0) | 2022.12.01 |
Java 16일차 1(JSON) (0) | 2022.12.01 |
15일차 3-1(entry) (0) | 2022.11.30 |