Morya

C++ 捕获异常到底用引用还是指针

捕获异常,用引用还是用指针,我一直很糊涂。
学STL里面,有可能抛出异常的地方,用指针一直都无法捕获,搞相当疑惑。
后来才知道,用那种格式需要对你调用函数会抛出哪种异常清楚才行。

下面是示例代码:

 1 #include <iostream>
 2 #include <string>
 3 #include <exception>
 4 
 5 using std::cout;
 6 using std::endl;
 7 using std::string;
 8 using std::exception;
 9 
10 class MyException : public exception{
11 public:
12     MyException();
13 };
14 
15 MyException::MyException():exception("You know that"){}
16 
17 void thr(){
18     throw new MyException();
19 }
20 
21 void test_exception(){
22     
23     string s;
24     try{
25         s.at(1);
26     }
27     catch(exception & e){
28         cout << "Caught exception." << e.what() << endl;
29     }
30 
31     try{
32         thr();
33     }
34     catch(MyException* e){
35         cout << "Caught myException: " << e->what() << endl;
36         delete e;
37         e = NULL;
38     }
39 }
40 
41 void main(){
42     test_exception();
43 }
44 

异常是以指针方式抛出,就用指针形式来捕获,用普通形式抛出,就需要用普通格式,为了减少复制,那么用引用就可以了。

posted on 2009-07-28 17:14 Morya 阅读(784) 评论(0)  编辑 收藏 引用


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


导航

<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

统计

常用链接

留言簿(1)

随笔档案(21)

文章档案(1)

最新评论

评论排行榜