• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

14.3 / 3:50 질문있습니다

24.04.25 10:16 작성 조회수 49

1

throw Exception();

위에서 익명객체를 throw했습니다.

제가 알기로는 익명객체는 rvalue로,

주소값이 없는걸로 알고 있는데,

이를 참조로 받을 수 있는 이유가 궁금합니다.

답변 1

답변을 작성해보세요.

2

Soobak님의 프로필

Soobak

2024.04.25

안녕하세요, 질문&답변 도우미 Soobak 입니다.

 

예외 처리에서 예외가 던져질 때 생성되는 익명 객체의 생명은 catch 블록에서 참조로 받고, catch 블록이 종료될 때까지 연장됩니다.
이는 C++ 표준에 따른 예외 처리 중 익명 객체에 대한 규칙입니다.
즉, 예외를 던질 때 익명 객체를 사용하는 경우, 이 객체를 임시적으로 메모리에 저장하고, catch 블록에서 해당 객체를 참조하여 예외를 처리할 수 있도록 합니다.

첨부드리는 링크의 14번 주석을 참고해보시면 도움이 되실 것 같습니다.
https://timsong-cpp.github.io/cppwp/except#handle-14

 

임준서님의 프로필

임준서

질문자

2024.04.26

감사합니다.