본문 바로가기
Java

예외 발생 및 회피

by Backchus 2019. 1. 25.

예외 발생시키기

자바에서는 throw 키워드를 사용하여 강제로 예외를 발생시킬 수 있다.

1
2
3
4
5
Exception e = new Exception("오류메시지");
 
...
 
throw e;
cs

위의 예제처럼 생성자에 전달된 문자열은 getMessage() 메소드를 사용하여 오류 메시지로 출력할 수 있다.


예외 회피하기

메소드 선언부에 throws 키워드를 사용하여 해당 메소드를 사용할 때 발생할 수 있는 예외를 미리 명시할수도 있다.

이렇게 하면 해당 메소드를 사용할 때 발생할 수 있는 예외를 사용자가 충분히 인지할 수 있으며, 그에 대한 처리까지도 강제할 수 있다.

따라서 더욱 안전성 있는 프로그램을 손쉽게 작성할 수 있도록 도와줄 수 있다.


다음 예제는 호출된 메소드에서 발생한 예외를 호출된 메소드에서 처리하는 예제이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class Exception03 {
 
    static void handlingException() {
 
        try {
 
            throw new Exception();
 
        } catch (Exception e) {
 
            System.out.println("호출된 메소드에서 예외가 처리됨!");
 
        }
 
    }
 
 
 
    public static void main(String[] args) {
 
        try {
 
            handlingException();
 
        } catch (Exception e) {
 
            System.out.println("main() 메소드에서 예외가 처리됨!");
 
        }
 
    }
 
}
cs

실행결과: 호출된 메소드에서 예외가 처리됨!


이때 호출된 메소드의 try / catch 문을 생략하면 컴파일 오류가 발생한다.

또한, 이 메소드를 호출한 main() 메소드는 호출된 메소드에서 예외가 발생한 사실을 알 수 없다.


다음 예제는 throws 키워드를 사용하여 호출된 메소드에서 발생한 예외를 호출한 메소드로 넘기는 예제이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Exception04 {
 
    static void handlingException() throws Exception { throw new Exception(); }
 
 
 
    public static void main(String[] args) {
 
        try {
 
            handlingException();
 
        } catch (Exception e) {
 
            System.out.println("main() 메소드에서 예외가 처리됨!");
 
        }
 
    }
 
}
cs

실행결과: main() 메소드에서 예외가 처리됨!


이렇게 함으로써 호출된 메소드에서는 try / catch 문을 생략할 수 있다.

그리고 호출된 메소드에서 발생한 예외를 해당 메소드를 호출한 main() 메소드에서 처리할 수 있게 된다.


참고링크: http://tcpschool.com/java/java_exception_throw (TCP school)

'Java' 카테고리의 다른 글

LocalDate, LocalTime  (0) 2019.08.23
스트림  (0) 2019.01.28
예외 클래스  (0) 2019.01.25
예외 처리  (0) 2019.01.25
Comparable과 Comparator  (0) 2019.01.24