程序的错误通常包括:语法错误、逻辑错误、运行异常。
下面分别介绍:
1. 语法错误:
这个不必多说,大家在之前的学习一定都知道,就是只程序代码不符合语法要求,在编译、链接时候就由编译器提示出来的错误,好发现。
2. 逻辑错误:
这种情况,是指编译没问题,没有错误,可以运行起来。但程序的输出结果或执行过程不如我们所愿,达不到预期的结果,这种错误就叫做逻辑错误,需要不断的调试、测试来发现。
3. 运行异常:
运行异常(exception)是指程序在运行过程中由于意外的情况,造成的程序异常终止,比如内存不足、打开的文件不存在、除数为0的情况等等。
前面两种我们都已经知道,第三种则是我们本章要详细展开讲解的知识了。通常情况下,导致程序异常错误,虽然无法避免,但是确可以预料,进行预见性的处理,来避免程序崩溃,从而保障程序的健壮性。这种行为我们称之为异常处理。
在过往学习中,我们捕获和处理异常的方法也很多,比如通过if...else判断调用函数的返回值,或在执行代码之前对关键的数据进行检查等等,如果出现问题,则用exit()或abort()等函数来终止程序。
比如:
cin>>a>>b;if(b==0)//捕获异常{cout<<Drivide0!<<endl;}else{cout<<a<</<<b<<=a/b<<endl;}
大家可以看到,在过往的学习中,我们往往通过if来进行判断,从而对关键部分进行捕获和预防,但这种方式在使用过程中往往会因为if判断过多,使程序的易读性降低,并且对于需要判断函数返回值的情况,对于那些没有返回值的函数,就束手无策了,为此C++为我们提供了异常处理的方案。