소멸자에 예외를 던지고 실패할 수 있는 코드가 있다면 소멸되지 않아 미정의 동작 발생 가능

=> 소멸자에서 직접 예외를 처리하지 않고 보통 함수(사용자 쪽)에서 처리하도록 한다.

=> 만약 사용자 쪽에서 예외를 던진다면 소멸자에서 예외에 대해 삼키든 프로그램을 종료하든 상관없다.

=> 사용자 쪽에서 먼저 예외에 대한 처리를 하도록 한 것

// 사용자 쪽에서 예외 처리를 한 것
DBConn::~DBConn(){
	db.close(); // DBConnection db
}

DBConnection::close(){
	try { close 시도 }
    catch ( ... ) {
    	예외에 대한 처리
	}
}

// 사용자 쪽에서 예외 처리를 하지 않은 것
// 소멸자에서 미정의 동작 방지
DBConn::~DBConn(){
	try { db.close(); }
    catch ( ... ) {
    	예외에 대한 처리
	}
}

DBConnection::close(){
	DB Close
}

 

+ Recent posts

목차