c++中有一些的异常处理是不可避免的,c++中 throw try catch 是三个专门处理异常的函数。我将用自己的语言简单的介绍如何使用这三个函数。
throw //抛出异常,后面可以很整型 浮点型等等 该函数的抛出的异常可被catch捕捉到
try{
......}』 //里面执行你认为可能出现异常的语句,当出现异常以后,抛出异常
catch(int a){} //捕获异常,当执行前面语句抛出的类型与()内类型一致则执行{}内语句
以上要注意的是
1)如果 try 语句内无异常则不执行catch语句段
2)若未找到抛出的类型,则默认会终止程序
3)若异常的抛出点本身在 try语句段内,则抛出异常后在捕获到异常后不会执行抛出点后面的语句
下面举几个简单的例子
#include<iostream>
using namespace std;
int main(){
cout<<"1--befroe try block..."<<endl;
try{
cout<<"2--Inside try block..."<<endl;
throw 10;
cout<<"3--After throw ...."<<endl;
}
catch(int i) {
cout<<"4--In catch block1 ... exception..errcode is.."<<i<<endl;
}
catch(char * s) {
cout<<"5--In catch block2 ... exception..errcode is.."<<s<<endl;
}
cout<<"6--After Catch...";
system("pause");
}
以上这个例子就会输出
2–Inside try block…
4–In catch block1 … exception…errcode is… 10
6–After Catch…
下面将异常与读写文件结合起来
# include<iostream>
# include<fstream>
using namespace std;
void writetxt(int a)
{
ofstream ruitxt("../pratice.txt",ios::app);
if(a==1)
throw 0;
else
{
ruitxt << "this is a test" << endl;
ruitxt.close();
}
}
int main()
{
try{
writetxt(1);
}
catch (int a)
{
cout << "error write" << endl;
return 1;
}
cout << "success" << endl;
}
运行结果如下:
若将更改为除1以外的其他数字,会建立对应的txt,并在里面输入内容。
经过一段时间的学习,c++基础内容将告一段落,下一阶段将进行 c++源码库分析。