본문 바로가기

백엔드개발자 준비하기

[백엔드개발자 준비하기] 예외처리

예외처리
트라이캐치문
트라이문 : 예외가 일어날수도 있는 부분
캐치문 : 트라이문에서 오류(예외)가 난부분을 받아 이어 실행
캐치문안에서 하나씩 예외처리 종류별로 하나씩 다 처리해주어야 함(else if 느낌으로)
마지막에 Exception을 두어야 함

상위에 런타임익셉션이 있으면 언체크드 익셉션

런타임이 없으면 체크드익셉션

 

예외에는 메세지를 줄 수 있다

모든 예외의 최상위가 Throwable임 거기다 super를 사용하여 detailmessage 에 넘겨줌
그것으로 예외처리 문자 출력

예외를 직접 만들어 사용하는것도 가능하다

 

[ArrayException]

	public static void main(String[] args) {
		
		Integer[] nums = {1, 2, 3, 4, 5};
		
		try {
			throw new NullPointerException();
//			for(int i = 0; i < 6; i++) {
//				System.out.println(nums[i]);
//			}
		} catch (IndexOutOfBoundsException e) {
			System.out.println("예외 처리함");
		} catch (NullPointerException e) {
			System.out.println("빈값 처리함");
		} catch (Exception e) {
			System.out.println("예상 못한 예외 처리함");
		}
		
		System.out.println("프로그램 정상 종료");
	}
}

 

[ThrowException]

public class ThrowsException {

	public static void printList(List<String> list, int size) throws IndexOutOfBoundsException {
		
		for(int i = 0; i < size; i++) {
			System.out.println("[" + i + "]" + list.get(i));
		}
		System.out.println();
	}
	
	public static void main(String[] args) {
		String[] names = {"김수현", "이종현", "박성진", "김동민"};
		
		try {
			throw new ClassCastException();
//			printList(Arrays.asList(names), 5);
		} catch (IndexOutOfBoundsException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			System.out.println("무조건  실행");
		}
		
		System.out.println("프로그램 정상 종료");
	}
}

 

[CustomException]

public class CustomErrorException extends RuntimeException {

	public CustomErrorException() {
		System.out.println("내가 만든 예외 생성");
	}

	public CustomErrorException(String message) {
		super(message);
	}
}