我为什么在捕获一个异常之后就不能继续?


  
换句话说,C++为什么不提供一种简单的方式,让程序能够回到异常抛出点之后,并继续执
行? 
  
主要的原因是,如果从异常处理之后继续,那么无法预知掷出点之后的代码如何对待异常处
理,是否仅仅继续执行,就象什么也没有发生一样。异常处理者无法知道,在继续之前,有
关的上下文环境(context)是否是“正确”的。要让这样的代码正确执行,抛出异常的
编写者与捕获异常的编写者必须对彼此的代码与上下文环境都非常熟悉才行。这样会产生非
常复杂的依赖性,因此无论在什么情况下,都会导致一系列严重的维护问题。 
  
当我设计C++的异常处理机制时,我曾经认真地考虑过允许这种继续的可能性,而且在标准
化的过程中,这个问题被非常详细地讨论过。请参见《C++语言的设计和演变》中的异常处
理章节。

posted on 2007-03-24 09:51 阿刚 阅读(218) 评论(0)  编辑 收藏 引用


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


导航

<2007年3月>
25262728123
45678910
11121314151617
18192021222324
25262728293031
1234567

统计

常用链接

留言簿(1)

随笔档案

文章档案

C++ BBS

C++ FAQ

C++ WEBSITE

搜索

最新随笔

最新评论

阅读排行榜

评论排行榜