본문 바로가기

spring/그 외 알게 된 것

예외던지기

 public Order createOrder (Order order) throws NullPointerException {
        // 회원이 존재하는지 확인
        verifyOrder(order);
        updateStamp(order);
        String str = null;
        str.toUpperCase();
        throw new NullPointerException(); // 강제로 예외 발생 

        // 아래 로직은 order.getOrderCoffee를 순회하며 해야 하는 일
        // TODO 커피가 존재하는지 조회하는 로직이 포함되어야 합니다.
        //커피 존재 , 커피의 수량 -> 스탬프 카운트 증가

//       List<OrderCoffee> orderCoffees = order.getOrderCoffees();
//        int totalQuantity = order.getMember().getStamp().getStampCount();
//       for (OrderCoffee orderCoffee : orderCoffees){
//          //검증
//           coffeeService.findVerifiedCoffee(orderCoffee.getCoffee().getCoffeeId());
//               totalQuantity += orderCoffee.getQuantity();
//           //오더커피마다 가진 퀀티티를 더해줌 그 합을 -> 스탬프에 넣음
//       }
//       //스탬프에 넣어준다.
//        order.getMember().getStamp().setStampCount(totalQuantity);
//       order.getMember().getStamp().setModifiedAt(LocalDateTime.now());

        return orderRepository.save(order);
    }

 

throws와 throw의 차이

throws

throws는 메서드 선언부에 사용되며, 해당 메서드가 예외를 발생시킬 수 있음을 알리는 역할을 한다.
즉, "이 메서드에서 예외가 발생하면 호출한 곳으로 던질게" 라는 의미다.

  • 사용 위치: 메서드 선언부
  • 주요 역할: 호출한 메서드에게 예외 처리를 위임
  • 형식:
    public void method() throws IOException {
        // 예외가 발생할 가능성이 있는 코드
    }
    

throw

throw는 실행 중 특정 시점에서 직접 예외를 만들어 던질 때 사용된다.
즉, "이 예외를 지금 만들어서 던질게"라는 의미다.

  • 사용 위치: 메서드 내부
  • 주요 역할: 특정 조건에서 예외를 발생시킴
  • 형식:
    public void method() {
        throw new IllegalArgumentException("잘못된 인자입니다.");
    }
    

비교

특징 throws throw

역할 예외를 던질 가능성을 선언 예외를 실제로 발생시킴
위치 메서드 선언부 메서드 내부
예외 처리 호출한 쪽에서 예외를 처리해야 함 즉시 예외가 발생함
사용 예 throws IOException throw new IOException("파일 오류")

예제

// throws 예제
public void readFile(String filePath) throws IOException {
    FileReader reader = new FileReader(filePath); // IOException 가능성
}

// throw 예제
public void validateNumber(int number) {
    if (number < 0) {
        throw new IllegalArgumentException("음수는 허용되지 않습니다."); // 즉시 예외 발생
    }
}

throws는 예외를 예고하는 것이고,
throw는 예외를 즉시 발생시키는 것이다.

'spring > 그 외 알게 된 것' 카테고리의 다른 글

ResponseEntity  (0) 2024.07.12
이거 봐야해 : 영속성  (0) 2024.07.10
Gson과 Json은 뭐가 다를까  (0) 2024.07.02
어노테이션 정리  (0) 2024.06.29
프록시란  (0) 2024.06.26