当在运行某程序出现异常时,系统只会取调用abort()函数将该程序终止,而不会去处理该异常。
C++标准库异常类exception的异常处理机制
throw std::exception(“error”);//显示生成该作用域的临时对象,抛出该对象
由try包含可能异常的代码块,try会将抛出异常的对象拷贝一份副本到当前作用域
由catch进行捕获并处理异常,将副本与catch对应的形参类型匹配
class St
{
public:
St():top(0)
{}
void push(T val)
{
if(full())//如果栈满,就是一个非法的操作,就抛出异常
{
throw std::exception("stack is full!");
}
arr[top++]=val;
}
private:
bool full()
{
return top==1;
}
T arr[1];
int top;
};
void test()
{
throw 1;
}
void test1()
{
throw 2.3;
}
int main()
{
St<int> s1;
try
{
//s1.push(10);
//s1.push(20);
//test();
test1();
}
catch(std::exception& err)
{
std::cout<<err.what()<<std::endl;
}
catch(int err)
{
std::cout<<err<<std::endl;
}
catch(...)
{
std::cout<<"other error"<<std::endl;
}
}