刷野打怪上王者·C++篇·第19期·异常处理
参考链接
RUNOOB.COM
异常处理
当我们在写项目代码的时候,并不是一写即成的状态,而是要反复多次测试才能使程序出错率降到最低。因此,在程序测试过程中,需要将可能出现的异常进行监视,并在出错的时候返回异常信号、内存释放等。
在C++的异常处理中主要有三个关键字:try、catch、throw。try:可能出现要出现异常的代码块;catch:捕获异常信号;throw:异常出现时,抛出一个异常。
try/catch处理try{ /*可能出现异常信号的代码*/}cathc(/*异常类型*/){ /*异常处理代码*/}...cathc(/*异常类型*/){ /*异常处理代码*/}throw:语句的操作数可以是任意的表达式,表达式的结果的类型决定了抛出的异常的类型。
代码实例
#include using namespace std;class dataDisposeClass{public: dataDisposeClass(int iTmp1, int iTmp2); ~dataDisposeClass(); void dividData();private: int iVar1; int iVar2;};dataDisposeClass::dataDisposeClass(int iTmp1, int iTmp2){ this->iVar1 = iTmp1; this->iVar2 = iTmp2;}void dataDisposeClass::dividData(){ try { if (this->iVar2 == 0) throw -1; else cout << this->iVar1 / this->iVar2 << endl; } catch (double tmp) { cout << "error catch(double) = " << tmp << endl; } catch (int tmp) //捕获与之类型相同的数据进行操作 { cout << "error catch(int) = " << tmp << endl; }}dataDisposeClass::~dataDisposeClass(){}int main(){ dataDisposeClass dataDispose1(5, 0); dataDispose1.dividData(); //程序运行时会跑出异常 dataDisposeClass dataDispose2(5, 1); dataDispose2.dividData(); getchar();}
运行结果
error catch(int) = -15
在C++中定义了标准系统
中的结构:
每个的含义为:
实例代码
#include #include using namespace std;int main(){ try { char *cPtr = new char[0x7fffffff]; //无法分配这么多空间,会抛出异常 } catch (bad_alloc &error) { cout << error.what() << endl; } getchar(); return 0;}
运行结果
bad allocation
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~