Posted on 2011-04-09 01:50
九品莲 阅读(584)
评论(0) 编辑 收藏 引用
1 class Person
2 {
3 public:
4 ~Person()
5 {
6 std::cout <<"Person::~Person() throw a exception" << std::endl;
7 throw "Person destructor throw exception";
8 }
9 };
10
11 int _tmain(int argc, _TCHAR* argv[])
12 {
13 try
14 {
15 Person one;
16 }
17 catch()
18 {
19 std::cout << "catch exception1" << std::endl;
20 }
21
22 try
23 {
24 Person one;
25 throw 5;
26 }
27 catch()
28 {
29 std::cout << "catch exception2" << std::endl;
30 }
31
32 return 0;
33 } 析构函数里抛出异常时,有时是可以被捕捉的,如第一个try块中;然而,在第二块中,不能被捕捉,而导致程序停止。这只是简单的代码,当析构函数中业务逻辑不简单时,有可能抛出异常,所以析构函数里如果有复杂的代码处理时,应该在析构函数里加上异常处理。