posts - 3, comments - 0, trackbacks - 0, articles - 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块中;然而,在第二块中,不能被捕捉,而导致程序停止。这只是简单的代码,当析构函数中业务逻辑不简单时,有可能抛出异常,所以析构函数里如果有复杂的代码处理时,应该在析构函数里加上异常处理。

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理