Test155~156 예외(Exception) 처리 - (3) throw(사용자 정의 예외)
2020. 9. 22. 02:30
throw
[ 사용자 정의 예외 객체 ]
- 기본 라이브러리(API)에서 제공하는 예외 객체 외 개발자가 선언해서 사용하는 예외 객체
- Exception클래스 또는 Exception의 자식 클래스를 반드시 상속받아야 함
- 일반적으로 Exception에서 선언된 형태의 생성자 외에는 다른 멤버를 가지지 않음
즉 Exception을 상속받는 예외 객체를 직접 만들고, 조건문을 사용해서 특정 상황에서 예외를 강제로 발생하도록 만든다. 사실 이 경우 조건문이기 때문에 굳이 예외 객체를 생성하지 않더라도 처리하고 싶은 예외 상황을 조건문으로 처리하거나, 예외 객체 대신 그냥 메소드로 생성해서 사용할 수도 있다. 다만 명시적인 예외 객체를 사용하므로써 코드의 가시성을 높일 수 있다.
아래는 일반 메소드로 예외 처리를 했을 경우입니다. 그냥 예외 상황에 대한 처리 구문을 메소드로 만들어 소환하면 된다.
// Test156.java 파일과 비교~!!! class Demo { private int value; public void setValue(int value) { if(value<=0) return; //-- 종료 → setValue() 메소드 종료 this.value = value; } public int getValue() { return value; } } public class Test155 { public static void main(String[] args) { Demo ob = new Demo(); ob.setValue(-3); int result = ob.getValue(); System.out.println(result); } }
아래는 예외 객체를 생성해서 위와 같은 예외 상황을 처리한 예다. 강제로 예외를 발생시킬 때는 "throw"를 사용한다. 이전글에서 예외를 호출한 쪽으로 던져주는 "throws"와 한글자가 다른 점에 유의해야 한다. 사용자 정의 예외 객체의 사용은 각자의 설계와 스타일에 맞게 사용하면 된다.
// Test155.java 파일과 비교~!!! // ※ throw class Demo { private int value; public void setValue(int value) throws Exception { if (value<=0) { // 예외 발생 throw new Exception("value 는 0보다 작거나 같을 수 없습니다."); } this.value = value; } public int getValue() { return value; } } public class Test156 { public static void main(String[] args)// throws Exception { Demo ob = new Demo(); try { ob.setValue(-3); int result = ob.getValue(); System.out.println(result); } catch (Exception e) { System.out.println("main() 에서 잡아낸 예외"); System.out.println(e.toString()); } } }
'JAVA > 예외처리' 카테고리의 다른 글
Test157~158 예외(Exception) 처리 - (4) 예외 다시 던지기 (0) | 2020.09.22 |
---|---|
Test153~154 예외(Exception) 처리 - (2) throws(예외 떠넘기기) (0) | 2020.09.21 |
Test152 예외(Exception) 처리 - (1) 개요, try~catch 구문 (0) | 2020.09.21 |