[13일차] 자바 - enum, 예외 처리

SOSO·2022년 5월 2일
0

학원

목록 보기
12/59
post-thumbnail

enum (enumeration type)

정의

  • 열거 타입
  • 상수를 가지고 생성되는 객체들을 한 곳에 모아둔 하나의 묶음이다

    [접근제한]enum [열거형 이름]{
    상수1,상수2,....,상수n
    }

예시 코드

enum Item2{
	ADD(5), DEL(11), SERCH(2), CANCEL(22);
	
	private final int var;
	
	//생성자
	Item2(int v){
		var = v;
	}
	
	public int getVar() {
		return var;
	}
}

public class Main {
	public static void main(String[] args) {
		System.out.println(Item2.ADD);
		System.out.println(Item2.ADD.getVar());
		System.out.println(Item2.DEL.getVar());
		System.out.println(Item2.SERCH.getVar());
		System.out.println(Item2.CANCEL.getVar());
		
		//확장 for문을 이용한 상수 호출
		for(Item2 n : Item2.values()) {
			System.out.println(n+" "+n.getVar());
		}
	}
}

출력 결과

ADD
5
11
2
22


ADD 5
DEL 11
SERCH 2
CANCEL 22

예외 처리 (Exception)

정의

예상하지 못한 일들을 ‘예외’라 하고 이를 대비하고 준비하는 것이 바로 ‘예외처리’ 라고 한다

try~catch문


try{
// 예외가 발생 가능한 문장들;
}catch(예상되는_예외객체 변수명){
// 해당 예외가 발생했을 시 수행할 문장들;
}

다중 catch문

하나의 try문 내에 여러 개의 예외가 발생 가능할 때 사용한다

try{
// 예외가 발생 가능한 문장들;
} catch(예상되는_예외객체1 변수명){
// 해당 예외가 발생했을 시 수행할 문장들;
} catch(예상되는_예외객체2 변수명){
// 해당 예외가 발생했을 시 수행할 문장들;
} catch(예상되는_예외객체3 변수명){
// 해당 예외가 발생했을 시 수행할 문장들;
}

예시 코드

public static void main(String[] args) {
		int[] array = {10,20,30};
		//예외를 발생시키기 위해 인덱스 3 호출
		for(int i=0; i<=array.length; i++) {
			//예외처리
			//예외가 발생해도 정상 종료될 수 있도록 프로그램적으로 처리하는 것을 말함
			try {
				//예외가 발생할 가능성이 있는 코드를 명시
				//만약 예외가 발생하면 예외가 발생한 코드의 실행을 멈추고 catch
				//블럭으로 이동
				System.out.println("array["+i+"]:"+array[i]);
			}catch(ArrayIndexOutOfBoundsException e) {
				//예외가 발생하면 catch블럭으로 이동해서 예외가 발생한 이유를
				//출력하거나 대체코드를 실행
				System.out.println("없는 인덱스 호출");
			}
		}
	}

출력 결과

array[0]:10
array[1]:20
array[2]:30
없는 인덱스 호출

throws

예외처리를 메서드에게 양도할때 사용

throws, throw 차이점

throw : 에러를 고의로 발생시킬 때 사용
throws : 자신을 호출한 상위 메소드로 에러를 던지는 역할

public class Main {

	public void methodA(String[] n) throws Exception {
		if (n.length > 0) {
			//확장 for문을 이용한 데이터 출력
			for(String str : n) {
				System.out.println(str);
			}
		}else {//length == 0
			throw new Exception("배열에 요소가 없습니다");
		}
	}			
	public static void main(String[] args) {
		ExceptionMain08 ex = new ExceptionMain08();
		try {
			ex.methodA(args);
		}catch(Exception e) {
			System.out.println(e.getMessage());
		}
	}

}
profile
한다 열심히

0개의 댓글