try 放置可能发生异常的代码块
catch 处理异常代码块
throw 抛出异常对象
好处:
1.异常发生以后,抛到相应的处理块,处理完以后,程序继续往下运行
2.异常栈展开:首先在当前函数栈帧上找try catch,如果当前没有或者没有被匹配,就往上抛,就到调用这个函数栈帧上找,往复循环,如果一直到main函数还没有找到,就会将异常抛给系统,系统调用abort处理异常,终止程序。
将异常封装到类中:
#include<iostream>
#include<string>
using namespace std;
class Exception
{
public:
Exception(string info) :errinfo(info) {}
virtual string what()
{
return errinfo;
}
protected:
string errinfo;
};
void func()
{
throw Exception("err");
}
int main()
{
try
{
func();
}
catch (Exception& err)
{
cout << err.what() << endl;
}
return 0;
}