<개요>
예외를 항상 throw new Exception(" 예외 발생 시 하고 싶은 말"); 로 한다면, 마지막 catch 구문에서 할 일이 너무 많다.
Exception이란 특정적이지 않고 모든 걸 포괄하는 예외에 던졌기 때문에, ()안의 말이 아니면 무슨 이유 땜에 예외가 일어났는지 알기도 쉽지 않다.
따라서 우리가 직접 특정 순간에만 작동하는 예외 클래스를 만들고 그 예외 객체를 이용하여 예외 처리를 할려고 한다.
public class _06_CustomException {
public static void main(String[] args) {
// 사용자 정의 예외
int age = 17;
try {
if(age < 19){
// System.out.println("만 19세 미만에게는 판매하지 않습니다. ");
throw new AgeLessThan19Exception("만 19세 미만에게는 판매하지 않습니다.");
} else {
System.out.println("주문하신 상품 여기 있습니다.");
}
}catch (AgeLessThan19Exception e) {
System.out.println("조금 더 성장한 뒤에 오세요.");
} catch (Exception e){
System.out.println("모든 예외를 처리합니다.");
}
}
}
class AgeLessThan19Exception extends Exception {
public AgeLessThan19Exception(String message) {
super(message);
}
}
해당 예제는 19세 미만이 오면 예외를 던지는 구문이다. AgeLessThan19Exception이란 예외 클래스를 만들어서 해당 예외의 객체를 생성했다.
그리고 AgeLessThan19Exception이 나왔을 때 작동하는 catch 구문을 따로 둬서 해당 예외 상황 발생 시 해야할 행동을 그냥 Exception과 구분했다.
이는 다른 개발자가 와서 코드를 봐도 가독성이 좋고, 관심사를 다 분리 시켰기에 코드 확장 시 편하다.
** 스스로 해보기
package WorkOut_Myself;
public class CustomException_myself {
public static void main(String[] args) {
String name = "김판덕";
try {
if(name.contains("김")){
throw new NokimException("김씨 인가요?");
}
else {
System.out.println(" 들어가세요.");
}
} catch (NokimException e) {
e.printStackTrace();
System.out.println("김씨는 출입 금지 입니다!!");
}
catch (Exception e) {
e.printStackTrace();
} finally {
System.out.println("잔치 시작");
}
}
}
class NokimException extends Exception {
public NokimException(String message) {
super(message);
}
}
'Language > Java' 카테고리의 다른 글
Thread (0) | 2023.03.09 |
---|---|
Throws (예외 처리 미루기) (0) | 2023.03.02 |
Try with Resources (0) | 2023.02.28 |
Finally 구문 (0) | 2023.02.28 |
Throw (0) | 2023.02.24 |