인프런 커뮤니티 질문&답변

임준서님의 프로필 이미지

작성한 질문수

홍정모의 따라하며 배우는 C++

14.3 예외 클래스와 상속

14.3 / 3:50 질문있습니다

24.04.25 10:16 작성

·

106

1

throw Exception();

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

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

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

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

답변 1

2

Soobak님의 프로필 이미지

2024. 04. 25. 22:56

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

 

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

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

 

임준서님의 프로필 이미지
임준서
질문자

2024. 04. 26. 09:35

감사합니다.