Creative Code

예외처리 본문

코딩 study/JAVA

예외처리

빛하루 2022. 7. 12. 21:32

**예외 발생종류

0으로 나누는경우 - ArithmeticException 예외발생
없는 파일을 열 경우  - FileNotFoundException 예외 발생 
배열 범위 오류 - ArrayIndexOutOfBoundsException 예외 발생

 

**예외처리기법

int n;
try {
   n = 4/0; //0으로 나눌때 에러발생
} catch(ArithmeticException e) {
   n = -1; // 예외가 발생하면 이 문장 실행
}

**finally

try {
   예외가 발생하는 조건
} catch (예외 종류) {
   예외 대체 실행문
} finally {
   예외에 상관없이 무조건 수행할 함수
}

**RuntimeException 

class FoolException extends RuntimeException {
}

public class Main {
    public void sayNick(String nick) {
        if ("fool".equals(nick)) {
            throw new FoolException();
        }
        System.out.println("당신의 별명은 "+nick+" 입니다.");
    }
    public static void main(String[] args) {
        Main sample = new Main();
        sample.sayNick("fool");
        sample.sayNick("genious");
    }
} // 인위적으로 예외 발생 시키기 (실행시 발생하는 예외), 예외가 발생할수도 발생 안할수도 있는 경우에 작성한다.

** Exception

class FoolException extends Exception {
}

public class Main {
    public void sayNick(String nick) {
        try {
            if ("fool".equals(nick)) {
                throw new FoolException();
            }
            System.out.println("당신의 별명은 "+nick+" 입니다.");
        } catch(FoolException e) {
            System.err.println("FoolException이 발생했습니다.");
        }
    }
    public static void main(String[] args) {
        Main sample = new Main();
        sample.sayNick("fool"); // 실행 - 오류발생
        sample.sayNick("genious"); // 실행
    }
} // 이미예측가능한 오류, 컴파일시 발생하는 예외,

**throws (예외 던지기) -sayNick 매서드에서 예외를 처리하지않고 sayNick매서드를 호출한곳에서 예외처리하기

class FoolException extends Exception {
}

public class Main {
    public void sayNick(String nick) throws FoolException {
        if ("fool".equals(nick)) {
            throw new FoolException();
        }
        System.out.println("당신의 별명은 "+nick+"입니다.");
    }
    public static void main(String[] args) {
        Main sample = new Main();
        try{
            sample.sayNick("fool"); //실행 - 예외발생
            sample.sayNick("genious"); //실행x
        }catch(FoolException e) {
            System.err.println("FoolException이 발생했습니다.");
        }
    }
}

 

'코딩 study > JAVA' 카테고리의 다른 글

람다 함수,stream  (0) 2022.07.12
쓰레드  (0) 2022.07.12
기타-(1)  (0) 2022.07.12
입출력  (0) 2022.07.12
자료형-(3)  (0) 2022.07.11