throw new NotFoundShortenUrlException() 분해
throw와 new 는 역할이 완전히 다름.
throw → "이 예외를 던져라" 는 명령어 (키워드)
new NotFoundShortenUrlException() → 예외 객체 생성
왜 new가 필요한가?
Java에서 throw는 객체를 받음. 클래스 이름이 아니라.
java
throw NotFoundShortenUrlException; // ❌ 클래스 자체 - 객체 아님
throw new NotFoundShortenUrlException(); // ✅ 객체 생성 후 던짐
NotFoundShortenUrlException은 그냥 설계도(클래스) 임.
실제로 던지려면 그 설계도로 실체(인스턴스) 를 만들어야 함.
비유하자면
"불이야!" 를 외치려면 사람(객체) 이 있어야 함.
"사람" 이라는 개념(클래스)이 외치는 게 아님.
실제로 예외 객체 안에 뭐가 들어가냐면
java
public class NotFoundShortenUrlException extends RuntimeException {
public NotFoundShortenUrlException() {
super("ShortenUrl을 찾을 수 없습니다"); // 메시지, stacktrace 등
}
}
new 할 때 이 정보들이 객체에 담김. 그걸 throw가 JVM에 전달하는 구조.
'【Java】' 카테고리의 다른 글
| entity vs domain vs dto (0) | 2026.03.20 |
|---|---|
| try-with-resources (0) | 2026.03.18 |
| CompletableFuture() 비동기 작업을 다루는 도구 설명서 (0) | 2026.03.16 |
| Object .toString() (0) | 2025.08.27 |
| [JAVA] whlie문 밖에 또는 안에 무한루프의 궤도 (1) | 2025.08.19 |