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 |