c++未捕获异常的影响
来源:优易学  2011-12-2 10:03:48   【优易学:中国教育考试门户网】   资料下载   IT书店
  C++ 标准不指定程序在遇到未捕获异常时的行为。在一些系统中,遇到这种情况的结果是显示完整的堆栈跟踪,也就意味着在程序结束之前自动对象会正确地销毁。而在另外一些系统中,未捕获异常会导致程序直接结束,而不会销毁自动对象。
  这种回旋余地是不一致的;解决用户需要与供应商需要之间的冲突导致了这一现象的产生。在某些调试环境中,在遇到未捕获异常时避免析构对象是必要的,因为它能够让用户在程序终止之前恢复执行。相反,在一些硬件架构中,如果不同时正确地销毁对象,那么展开堆栈几乎不可能做到。
  因为这是一个平台相关的行为,所以程序员就要分析在他们的系统在出现未捕获异常时的行为。更重要的是,如果我们的代码将在运行在多个平台之上,那么我们需要在 main() 函数中使用一个 catch(。 . .) 代码块来保证程序行为在不同平台下的一致性。 int main()
  {
  try
  {
  f();
  }
  catch(DerivedEx& d) //handle most derived exception first
  {}
  catch(BaseEx& e)
  {}
  catch(...) //no exception is left uncaught
  {}
  }
  这样就保证了不会出现未捕获的异常。

责任编辑:小草

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训