Java

2024년 6월 11일 KH 교육 전 Java 예습 (예외 처리)

최종군 2024. 6. 7. 11:58

 

예외 처리 : try ~ catch문

 

int c;
try {
    c = 4 / 0;
} catch(ArithmeticException e){
    c = -1;
}
System.out.println(c);

 

try : 예외가 발생할 가능성이 있는 코드를 포함 

catch : try에서 발생한 예외를 처리한다 

위 코드에서 

ArithmeticException e ArithmeticException 클래스의 예외 객체이다 

 

finally : 

int c;
try {
    c = 4 / 0;
    sample.shouldBERun();
} catch(ArithmeticException e){
    c = -1;
} finally {
    sample.shouldBERun();
}
System.out.println(c);

 

finally문은 예외 발생 여부와는 상관없이  해당 구문을 실행 시킨다 

 

 

RuntimeException : 

 

public void sayNick(String nick){
    if ("바보".equals(nick)){
        return; // 바보라는 문자열이 입력되면 return으로 메서드를 종료해 별명이 출력이 안된다 
    }
    System.out.println("당신의 별명은 " + nick + " 입니다 ");
}

public static void main(String[] args) {

    Sample sample = new Sample();
    sample.sayNick("바보");
    sample.sayNick("야호");

 

 

retren; - > 

throw new FoolException();

 

여기서 Foolexption은 RuntimeException을 상속 했다

class FoolException extends RuntimeException

 

예외는 크게 두 가지 종류가 있다 

 

RuntimeException : 실행 시 발생하는 예외 

Exception : 컴파일 시 발생하는 예외 

 

RuntimeException은 발생할 수도 있고 발생하지 않을 수도 있는 경우 

Exception : 예측이 가능한 경우에 사용한다 

 

 

 

class FoolException extends Exception {

}


public class Sample {

    public void sayNick(String nick){
        try {


            if ("바보".equals(nick)) {
                throw new FoolException();
            }

            System.out.println("당신의 별명은 " + nick + " 입니다 ");
        }catch (FoolException e) {
            System.err.println("FoolException이 발생했습니다");
        }
    }

 

기존 FoolException이 예측이 가능 Exception을 상속하게 되었다 

그럼 기존 구문을 컴파일 오류가 발생하게 되는데 

catch문에 FoolException e 을 넣고 System.err.println으로 변경 

 

실행 결과 : 

FoolException이 발생했습니다

 

예외 던지기 : 

public void sayNick(String nick) throws FoolException {
            if ("바보".equals(nick)) {
            throw new FoolException();
        }

        System.out.println("당신의 별명은 " + nick + " 입니다 ");
 

 

sayNick 메서드 뒷 부분에 throws라는 구문을 이용하여 FoolException을 위로 보낼 수가 있다

(예외를 뒤로 미루기)

 

throw : 메서드 내에서 예외를 발생 시키는데 사용한다 

throws: 메서드 선언부에서 사용이 되며 해당 메서드가 처리 하지않은 예외를 호출자에게 

전달함을 나타낸다 

public void sayNick(String nick) throws FoolException