부제 : 예외처리의 막장인생 소멸자
개념정리
: 소멸자가 호출되는 경우 두가지
1. 객체가 통상적인 상태에서 소멸 되는 경우(유효범위를 벗어 났을 경우, delete 됬을 경우)
2. 예외 처리 매커니즘에 의해 객체가 소멸 되는 경우
: 예외처리가 진행중일때 예외가 발생 된다면
1. terminate 함수 호출
: terminate 함수의 역활
1. 프로그램을 종료시킴
이유
1. 예외 전파의 일부분으로서 진행되는 스택 되감기 동작 중에 terminate가 호출되는것을 막기 위해
2. 소멸자의 동작을 완전히 끝내도록 하기 위해서(소멸자에서 예외가 발생하면 소멸자는 호출되지 않은 상태이다!)
구현 방법
1. 소멸자 처리 중 예외가 발생하면, 소멸자에서 그 예외를 처리해 주면 된다.
예)
개념정리
: 소멸자가 호출되는 경우 두가지
1. 객체가 통상적인 상태에서 소멸 되는 경우(유효범위를 벗어 났을 경우, delete 됬을 경우)
2. 예외 처리 매커니즘에 의해 객체가 소멸 되는 경우
: 예외처리가 진행중일때 예외가 발생 된다면
1. terminate 함수 호출
: terminate 함수의 역활
1. 프로그램을 종료시킴
이유
1. 예외 전파의 일부분으로서 진행되는 스택 되감기 동작 중에 terminate가 호출되는것을 막기 위해
2. 소멸자의 동작을 완전히 끝내도록 하기 위해서(소멸자에서 예외가 발생하면 소멸자는 호출되지 않은 상태이다!)
구현 방법
1. 소멸자 처리 중 예외가 발생하면, 소멸자에서 그 예외를 처리해 주면 된다.
예)
참조 : http://ideathinking.com/blog-v2/?p=71
'책 정리 > More Effective C++ 1판' 카테고리의 다른 글
항목 16 : 뼈속까지 잊지 말자, 80-20 법칙 (0) | 2008.05.20 |
---|---|
항목 15 : 예외 처리에 드는 비용에 대해서 정확히 파악하자 (0) | 2008.05.20 |
항목 14 : 예외지정 기능은 냉철하게 사용 하자 (0) | 2008.05.19 |
항목 13 : 발생한 예외는 참조자로 받아내자. (0) | 2008.05.19 |
항목 12 : 예외 발생이 매개변수 전달 혹은 가상 함수 호출과 어떻게 다른지를 이해하자. (0) | 2008.05.18 |
항목 10 : 생성자에서는 리소스 누수가 일어나지 않게 하자. (0) | 2008.05.16 |
항목 9 : 리소스 누수를 피하는 방법의 정공은 소멸자이다. (0) | 2008.05.16 |
궁극의 예외처리 (0) | 2008.05.16 |
항목 8 : new 와 delete의 의미를 정확히 구분하고 이해하자 (0) | 2008.05.15 |
항목 7 : &&, ||, 혹은 , 연산자는 오버로딩 대상이 절대로 아니다 (1) | 2008.05.15 |
최근댓글