一、C++异常机制使用了三个新的关键字
try ──标识可能出现的异常代码段
throw ──抛出一个异常
catch ──标识处理异常的代码段
二、抛出异常 throw
throw必须在 try代码块中.后边跟的值决定抛出异常的类型。
三、捕获异常 catch
出现在try代码块后,后边跟的数据决定捕获的类型
catch(...) //表示捕获所有异常
#include<iostream>
#include<stdexcept>
using namespace std;
void test(int n){
if(n==0){
throw invalid_argument("invalid argument!");
//invalid_argument为异常类型
//("")为该异常解释或原因
}
if(n==1){
throw runtime_error("runtime_error");
}
}
int main(int argc, char** argv) {
int n=3;
try{
test(n);
cout<<"no exception"<<endl;
//如果未抛出异常,则执行try块所有代码,再执行所有catch后的代码
}catch(invalid_argument &e){
//捕获一个类型明确的异常对象
cout<<e.what()<<endl;
//what() 是异常类提供的一个公共方法,它已被所有子异常类重载。这将返回异常产生的原因。
}catch(runtime_error &e){
cout<<e.what()<<endl;
}
cout<<"end"<<endl;
return 0;
}