shoppingmall/
├── Controller.java // Controller (사용자 요청 처리 및 View와 모델 연결)
├── CustomException.java // Model (예외 클래스)
├── DAO.java // Model (데이터베이스 관련 예외 처리 - 현재는 예시로만 존재)
├── Main.java // Main (프로그램 실행 및 서비스 흐름 제어)
├── Service.java // Service (비즈니스 로직 처리)
├── View.java // View (사용자에게 메시지 출력)
폴더 구조 설명:
Controller.java: 사용자의 요청을 처리하고, 비즈니스 로직을 구현합니다. 나이에 따라 예외를 던지거나 환영 메시지를 출력합니다.
CustomException.java: 사용자 정의 예외 클래스입니다. 나이가 20 미만일 때 발생하는 예외를 처리합니다.
DAO.java: 데이터베이스와 관련된 예외를 처리하는 클래스입니다. 실제 DB와의 연결이 필요할 경우 여기에 구현될 것입니다.
Main.java: 프로그램을 실행하고, Service 클래스를 호출하여 애플리케이션의 흐름을 제어합니다.
Service.java: 비즈니스 로직을 처리하는 부분입니다. 나이를 받으면 Controller를 호출하여 해당 비즈니스 로직을 수행합니다.
View.java: 사용자에게 메시지를 출력하는 클래스입니다.
NoKidsException이라는 예외 처리가 재밌는 이름인 이유는 "어린이는 가라"라는 메시지에서 유머러스하고 직설적인 표현을 사용하기 때문입니다. 예외 처리는 주로 오류나 예외적인 상황을 처리하는 기능을 하므로, 예외 클래스 이름을 유머러스하거나 창의적인 방식으로 작성하는 것은 코드에 재미를 더할 수 있습니다.
만약, "어린이는 가라"는 예외를 처리하려면 다음과 같이 새로운 예외 클래스를 만들 수 있습니다:
NoKidsException 예외 클래스public class NoKidsException extends Exception {
public NoKidsException(String message) {
super(message); // 부모 클래스인 Exception의 생성자 호출
}
}
이제, 예를 들어 쇼핑몰에 어린이가 들어갈 수 없도록 하는 경우, Controller에서 이 예외를 던지고 처리하는 방식으로 사용할 수 있습니다.
public class Controller {
public void checkAge(int age) throws NoKidsException {
if (age < 20) {
throw new NoKidsException("어린이는 가라!");
} else {
View.printMessage("입장하신걸 환영합니다.");
}
}
}
Main.java에서 사용public class Main {
public static void main(String[] args) {
Service service = new Service();
int exceptionCount = 0;
for (int i = 0; i < 10; i++) {
int age = (int)(Math.random() * 55) + 1; // 1~55 사이의 난수 발생
System.out.println("나이: " + age);
try {
service.processAge(age); // 나이 검사 메소드 호출
} catch (NoKidsException e) {
System.out.println("예외 발생: " + e.getMessage());
exceptionCount++;
}
}
System.out.println("총 발생한 예외의 개수: " + exceptionCount);
}
}
나이: 15
예외 발생: 어린이는 가라!
나이: 25
입장하신걸 환영합니다.
나이: 16
예외 발생: 어린이는 가라!
...
이 방식은 유머러스하면서도 NoKidsException이 어떤 예외인지 직관적으로 알 수 있게 해줍니다. 예외 메시지를 재미있게 작성하는 것은 개발자가 조금 더 창의적으로 작업할 수 있게 도와줄 뿐만 아니라, 코드의 가독성도 높일 수 있습니다!