[접근제한]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
예상하지 못한 일들을 ‘예외’라 하고 이를 대비하고 준비하는 것이 바로 ‘예외처리’ 라고 한다
try{
// 예외가 발생 가능한 문장들;
}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
없는 인덱스 호출
예외처리를 메서드에게 양도할때 사용
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());
}
}
}