Exception

qkrrnjswo·2023년 8월 1일
0

공부 정리

목록 보기
22/24

Exception?

어떤 원인때문에 비정상적인 동작을 일으키며 프로그램이 종료되는 상황을 말한다.
자바에서는 런타임 오류를 에러(Error)예외(Exception)로 구분하고 있다.

예외 처리

1. try ~ catch

try 문 안의 수행할 문장 중에서 예외가 발생하면
프로그램이 중지되거나 해당 예외를 catch에서 처리
catch문 안에서 다시 Exception 발생 시 다시 처리를 해줘야 함
즉, 2중 try ~ catch을 만들어야한다.

try {
    <수행할 문장 1>;
    <수행할 문장 2>;
    ...
} catch(예외1) {
    <수행할 문장 A>;
    ...
} catch(예외2) {
    <수행할 문장 a>;
    ...
}

--------------------
int c;
int[] a = new int[1];
try {
	c = 4 / 0;
} catch (ArithmeticException e) {
	a[4] = 4;
}

2. finally

어떤 예외가 발생하더라도 반드시 실행되어야 하는 부분

try {
	c = 4 / 0;
} catch (ArithmeticException e) {
	c = -1;
} finally {
	sample.shouldBeRun();  // 예외에 상관없이 무조건 수행된다.
}

예외 만들어서 활용하기

1. RuntimeException

class FoolException extends RuntimeException {
}
public class Sample {
    public void sayNick(String nick) {
        if("바보".equals(nick)) {
            throw new FoolException();
        }
        System.out.println("당신의 별명은 "+nick+" 입니다.");
    }

    public static void main(String[] args) {
        Sample sample = new Sample();
        sample.sayNick("바보");
        sample.sayNick("야호");
    }
}

2. 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이 발생했습니다.");
        }
    }

    public static void main(String[] args) {
        Sample sample = new Sample();
        sample.sayNick("바보");
        sample.sayNick("야호");
    }
}

// throws 사용 시 try 삭제 가능
public class Sample {
    public void sayNick(String nick) throws FoolException {
        if("바보".equals(nick)) {
            throw new FoolException();
        }
        System.out.println("당신의 별명은 "+nick+" 입니다.");
    }
}

참고

https://wikidocs.net/229
https://interviewnoodle.com/exception-in-java-89a0b41e0c45

0개의 댓글