소멸자와 예외처리(effective c++ 08)
2015. 8. 2. 17:47ㆍ프로그래밍/Effective C++
728x90
728x90
소멸자에서의 예외
소멸자에서 자원을 해제하는 내용에 예외가 생겼을 때
처리하지 못하고 종료되면 이 예외는 메모리 릭이나 미정의 동작을
일으킬 수 있다.
방안1. 프로그램 종료
예외가 생기면 프로그램을 바로 종료한다. (일반적으로 abort를 사용)
예외 이후에 프로그램을 계속 실행했을 때 문제가 크게 생기는 경우에
고려할 만한 선택이다.
방안2. 에외를 무시하고 계속 진행
예외가 생기면 무시하고 그냥 진행한다.
무엇이 잘못되었는지에 대한 정보를 알수없어 일반적으로는 좋은 선택이 아니나
예외를 무시해도 신뢰성 있게 진행할 수 있는 상황이면 고려할 수도 있다.
방안3. 사용자에게 위임
close함수를 직접 제공하여 사용자가 직접 처리할 수 있는 기회를 제공한다.
결론
소멸자에서는 예외가 빠져나가면 안된다.
모두 받아낸 다음 그냥 삼키던지 프로그램을 종료하던지 해야한다.
사용자가 예외에 반응해야 한다면
소멸자 말고 보통의 함수로 제공해줘야 한다.
728x90
반응형
'프로그래밍 > Effective C++' 카테고리의 다른 글
자기대입 처리(effective c++ 11) (0) | 2015.08.07 |
---|---|
대입 연산자 *this 반환(effective c++ 10) (0) | 2015.08.07 |
객체 생성과 소멸에 가상함수 호출하지 않기(effective c++ 09) (0) | 2015.08.02 |
다형성 가진 기본 클래스의 가상 소멸자(effective c++ 07) (0) | 2015.08.02 |
참조자 전달 선호하기(effective c++ 20) (0) | 2015.07.28 |
디폴트들 사용금지령(effective c++ 06) (0) | 2015.07.27 |
컴파일러의 디폴트 제공 함수들(effective c++ 05) (0) | 2015.07.27 |