Java 16일차 3(예외처리

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