본문 바로가기
  • Adillete
【Java】

throw new NotFoundShortenUrlException() 분해

by 아딜렛 2026. 3. 17.

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에 전달하는 구조.