我们在编写程序的过程中常常会遇到这样或者那样的错误,有语法错误,逻辑错误和运行错误等等。
通常情况下语法错误可以通过编译器自动进行判断,而逻辑错误则需要编写者本人进行改正。但是,有些情况下,语法和逻辑都是正确的,但是运行出现错误就很难发现。而造成运行错误的原因有很多,可能是系统内存不够又或者是其它等等。
因此,我们在编写程序的时候不仅仅需要考虑到代码的逻辑问题,还需要对有可能出现运行异常的地方进行处理。
如下:
#include <iostream>
using namespace std;
int main()
{
int * data = new int;
cout << *data << endl;
delete data;
return 0;
}
在上述代码中,我们为data指针申请了堆区内存。此时我们申请的内存只是一个int。
但是如果在一段代码中,系统在多个地方申请了大量的内存导致内存不足,此时再为其申请内存很用可能会导致内存不够。但是如果我们不对此做任何处理,任其出错,那么代码崩溃程序运行错误,此时的我们很难找到错误之处。
但是如果我们预先对此处的代码做了处理和判断结果就可以在程序出现错误的时候找到原因,如下:
#include <iostream>
using namespace std;
int main()
{
int * data = new int;
if (data == nullptr)
{
cout << "error!" << endl;
}
cout << *data << endl;
delete data;
return 0;
}
当内存申请失败的时候data指针就会被系统自动设置为nullptr,此时通过if判断就可以在程序出现错误的时候准确定位发现错误之处。
同样,我们在编写代码的过程中也常常会用到函数。而函数最大的用处就是实现特定的功能,大的功能也可以细分为小的功能。正因如此,在函数中调用函数也是非常常见的事情。但是如果在函数中发生错误想要直接在子函数中退出系统就需要用到系统提供的一个函数:exit(),如下:
#include <iostream>
using namespace std;
int test01()
{
int data;
cout << "Please input a number: ";
cin >> data;
if (data == 0)
{
exit(0);
}
return 1;
}
int main()
{
cout << test01() << endl;
return 0;
}
当我们输入0意外的数字时系统会打印我们输入的数字,者说明系统是一直运行到main函数的return才结束的。
但是当我们输入0时系统则不会输出任何东西说明系统运行exit时就直接退出,读者也可以通过断点调试功能自行进行查看。