您的位置:首页 > 编程语言 > C语言/C++

C++的try在catch后跳转到异常发生处吗

2010-10-14 21:38 519 查看
一般情况如上代码异常发生后跳转到catch块内,然后执行catch块后面的代码。

有没有办法回到异常发生的地方,即“*p = 'c';// 异常处”这行
__try,__except能做到,但因为不允许局部变量有析构所以在项目中不能使用,只能用try,catch

__try,__except是特定编译器的扩展吧?

就我的知识而言,标准的try,catch无法满足你的要求。

C++无视所有系统层面的异常.只有throw出来的它才可以catch
而__try __except __finally是MS的SEH机制.可以处理系统层面的异常.但不能很好的处理C++的异常.
MS的编译器在同一个函数级别里无法同时使用try catch和SEH.当然,你可以自己实现一个CRT,把C++异常和SEH合并,然后用try catch来处理所有的异常.
已经catch了就说明程序挂了,catch中一般只是去做一些内存的释放处理。
正确的程序应该是保证不进catch的。已经错了又怎么能回到错误之前呢。
当我们到达某一结点准备调整以该结点为根结点的子树时,
先调整其左子树将左子树转换成一个排好序的左子链表,再调整其右子树转换右子链表。
最近链接左子链表的最右结点(左子树的最大结点)、当前结点和右子链表的最左结点(右子树的最小结点)。
从树的根结点开始递归调整所有结点。
我们可以中序遍历整棵树。按照这个方式遍历树,比较小的结点先访问。
如果我们每访问一个结点,假设之前访问过的结点已经调整成一个排序双向链表,
我们再把调整当前结点的指针将其链接到链表的末尾。
当所有结点都访问过之后,整棵树也就转换成一个排序双向链表了。
把二元查找树转换成链表.其实我们就以为二元查找树为基础.因为左孩子节点小于跟节点,跟节点小于右孩子节点,所以我们就对二员查找树进行遍历.然后首先找出最小的节点,把该节点加入到链表中.然后调整二元查找树,在把最小的节点给加入到树中.其实有更好的算法.就是每次把可以加入的都加入进去在调整二元查找树,但是在工作,没有时间写算法.
谢谢你的收藏。但请你和后来看到此贴的各位
不要再回复如“mark”,“支持”,“好贴收藏”之类的了。
我更需要的是各位自己对题目本身的思路 和想法。谢谢。
★用一种算法来颠倒一个链接表的顺序。现在在不用递归式的情况下做一遍。
  ★用一种算法在一个循环的链接表里插入一个节点,但不得穿越链接表。
  ★用一种算法整理一个数组。你为什么选择这种方法?
  ★用一种算法使通用字符串相匹配。
  ★颠倒一个字符串。优化速度。优化空间。
  ★颠倒一个句子中的词的顺序,比如将“我叫克丽丝”转换为“克丽丝叫我”,实现速度最快,移动最少。
  ★找到一个子字符串。优化速度。优化空间。
  ★比较两个字符串,用O(n)时间和恒量空间。
来源:英超直播
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: