异常:try catch throw
异常机制,让小问题不至于退出程序,以及能及时得知一些问题出现的机制。
当程序发生某些问题时,让程序出现一个可以捕获的“异常exception事件”,通过捕获这个事件,得到异常详细信息。
try控制的代码范围内,如果有throw抛出异常,就可以被与try配套的后边的多条catch语句中符合条件的catch语句捕获。如果没有符合条件的catch语句捕获,就继续向上级抛出。
代码:(略)
标准异常:
使用malloc申请空间地址,若申请空间地址失败,则返回0
1 #include<iostream>
2 using namespace std;
3 int main(){
4 for (;;) {
5 system("pause");
6 void* p = malloc(1024*1024*200);
7 cout << "申请的内存地址是" << p << endl;
8 }
9 return 0;
10 }
下图是在我的电脑上进行的测试:
使用new申请空间地址,若申请空间地址失败,则抛出异常
1 #include<iostream>
2 using namespace std;
3 int main(){
4 for (;;) {
5 system("pause");
6 try {
7 int* p = new int[1024 * 1024 * 200];
8 cout << "申请的内存地址是" << p << endl;
9 }
10 catch (bad_alloc b) {
11 cout << b.what() << endl;//b.what()表示要输出的内容
12 }
13 }
14 return 0;
15 }
动态数组溢出
1 #include<iostream>
2 #include<vector>
3 using namespace std;
4 int main(){
5 for (;;) {
6 system("pause");
7 try {
8 vector<int> arr = { 1,2,3 };
9 arr.at(5);
10 }
11 catch (out_of_range o) {
12 cout << o.what() << endl;
13 }
14 }
15 return 0;
16 }
捕获异常通配(捕获所有类型异常),但是不能输出异常变量:
catch(...){}
//默认的异常处理,如果有,必须放在最后一个