소멸자에 예외를 던지고 실패할 수 있는 코드가 있다면 소멸되지 않아 미정의 동작 발생 가능
=> 소멸자에서 직접 예외를 처리하지 않고 보통 함수(사용자 쪽)에서 처리하도록 한다.
=> 만약 사용자 쪽에서 예외를 던진다면 소멸자에서 예외에 대해 삼키든 프로그램을 종료하든 상관없다.
=> 사용자 쪽에서 먼저 예외에 대한 처리를 하도록 한 것
// 사용자 쪽에서 예외 처리를 한 것
DBConn::~DBConn(){
db.close(); // DBConnection db
}
DBConnection::close(){
try { close 시도 }
catch ( ... ) {
예외에 대한 처리
}
}
// 사용자 쪽에서 예외 처리를 하지 않은 것
// 소멸자에서 미정의 동작 방지
DBConn::~DBConn(){
try { db.close(); }
catch ( ... ) {
예외에 대한 처리
}
}
DBConnection::close(){
DB Close
}
'C++ > Effective C++' 카테고리의 다른 글
Effective C++ 항목 10 대입 연산자는 *this의 참조자를 반환하게 하자 (0) | 2024.07.02 |
---|---|
Effective C++ 항목 9 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 (0) | 2024.07.01 |
Effective C++ 항목 7 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 (0) | 2024.07.01 |
Effective C++ 항목 4 객체를 사용하기 전에 반드시 그 객체를 초기화 하자 (0) | 2024.06.26 |
Effective C++ 항목 2 #define을 쓰려거든 const, enum, inline을 떠올리자 (0) | 2024.06.21 |