예외 발생시키기
자바에서는 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 |