138.安全退出的异常,要用throw 尽量不用exit(0)

复制代码
 1 #include<iostream>
 2 
 3 #include<cstdlib>
 4 using namespace std;
 5 ////非安全退出,结束进程,
 6 //C++ 必须释放对象,最后结束,安全退出
 7 
 8 class pstr
 9 {
10     int *p;
11 public:
12     pstr()
13     {
14         cout << "构造" << endl;
15         p = new int[1024 * 1024];
16     }
17     ~pstr()
18     {
19         cout << "析构" << endl;
20 
21         delete[] p;
22 
23     }
24 };
25 void run3(int i)
26 {
27     if (i == 0)
28     {
29         //throw  1;
30         exit(0);  //非安全退出,结束进程
31         //安全退出,释放对象内存,再结束进程
32     } 
33     else
34     {
35         cout << "run3" << endl;
36     }
37     
38 }
39 void run2(int i)
40 {
41     pstr p2;
42     run3(0);
43 }
44 
45 void run1(int i)
46 {
47     pstr p1;
48     run2(i);
49 }
50 
51 void main()
52 {
53     try
54     {
55         run1(0);
56     }
57     catch (int i)
58     {
59         cout << i << "error";
60 
61     }
62 
63     std::cin.get();
64     exit(0);
65 }
复制代码

 

posted @   喵小喵~  阅读(167)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
点击右上角即可分享
微信分享提示