什么是异常处理
异常处理:是编程语言或计算机硬件中的机制,用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件)
在C++中针对异常处理提供了一种标准的方法,用于处理程序运行时的错误,保证程序的健壮性、稳定性。但是异常处理的速度没有普通函数快,过多的异常处理会影响效率。
目的:对用户在程序中的非法操作进行控制和提示,以防程序崩溃。
C++异常处理方式
不再用if语句进行判断,有三个关键字,try,throw,catch
try-catch块
try{
包含可能抛出异常的语句
}
catch(类型名[形参名]){
处理异常的语句
}
try中放的是有可能出现异常的语句
catch中捕获并处理,捕获和处理的条件是抛出的异常类型与catch块参数类型相匹配
注意:在使用了try后,并非程序就不会崩溃,需要有以下两步
1、满足某个条件时显式的抛出一个异常
2、使用catch来匹配抛出的异常类型
异常处理的顺序:抛出异常->捕获异常->处理异常
抛出异常由程序员决定是什么异常、以及是否抛出异常,抛出何种异常
有一种可以捕获到任何类型异常的块如下(3.代替)
catch(...){
cout<<"error"<<endl;
}
这种是保底的办法,通用性最强,所有异常都能捕获。一般将匹配程度高的catch放在前面,无参数的catch放在后面。
#include <iostream>
using namespace std;
bool func(float a,float b,float& c){
//if(-0.000001<b && b<0.000001) return false;
//if(b==0) return false;
//1、显式的抛出异常
if(-0.000001<b && b<0.000001) throw "错误:除数为0";
c=a/b;
return true;
}
int main() {
float a=10,b=0,c=0;
bool res;
/*if(!res)
cout<<"fail"<<endl;
else
cout<<"success"<<endl;*/
try{
res=func(a,b,c);
}
catch(const char* error){//参数和抛出的异常匹配
cout<<error<<endl;
}
return 0;
}