栈解旋(unwinding)
时间:2021-08-25
本文章向大家介绍栈解旋(unwinding),主要包括栈解旋(unwinding)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
概念
异常被抛出后,从进入try块起,到异常被抛掷前,这期间在栈上构造的所有对象,都会被自动析构。析构的顺序与构造的顺序相反,这一过程称为栈的解旋(unwinding).
#define _CRT_SECURE_NO_WARNINGS #include <iostream> using namespace std; class myException { public: myException() { cout << "myException构造" << endl; } void printError() { cout << "自定义异常" << endl; } ~myException() { cout << "自定义异常析构" << endl; } }; class Person { public: Person() { cout << "Person构造" << endl; } ~Person() { cout << "Person析构" << endl; } }; int myDevide(int a, int b) { if (b == 0) { //栈解旋 //从try 开始 到throw抛出异常之前 所有栈上的对象 都会被释放 这个过程称为栈解旋 Person p1; Person p2; //栈解旋2 throw之前 throw myException(); //匿名对象 } return a / b; } void test01() { int a = 10; int b = 0; try { myDevide(a, b); //栈解旋1 try之后 } catch (myException e) { e.printError(); } } int main() { test01(); system("Pause"); return 0; }
结果:
原文地址:https://www.cnblogs.com/yifengs/p/15183801.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Tree - 95. Unique Binary Search Trees II
- Tree - 96. Unique Binary Search Trees
- Tree - 116. Populating Next Right Pointers in Each Node
- Tree - 297. Serialize and Deserialize Binary Tree
- 使用 shell 脚本批量创建用户详解讲解
- Tree - 230. Kth Smallest Element in a BST
- Tree - 173. Binary Search Tree Iterator
- Tree - 450. Delete Node in a BST
- Tree - 687. Longest Univalue Path
- DFS - 980. Unique Paths III
- Dynamic Programming - 375. Guess Number Higher or Lower II
- go语言的原生map引发的一个坑
- 分布式服务监控你真的会吗
- Design - 460. LFU Cache
- Binary Search - 33. Search in Rotated Sorted Array