异常处理(try/catch)
#include<stdio.h> int main() { try{ printf("打印块1代码执行\n"); throw 10;//产生一个异常 } catch(int& i){ printf("处理try块1的int类型异常对象,值为%d\n",i); } try{ printf("打印块2代码执行\n"); throw 23.8;//产生一个异常 } catch(int& i){ printf("处理try块2的int类型异常对象,值为%d\n",i); } catch(double d){ printf("处理try块2的double类型异常对象,值为%f\n",d); } printf("程序结束\n"); return 0; }
打印结果:
打印块1代码执行 处理try块1的int类型异常对象,值为10 打印块2代码执行 处理try块2的double类型异常对象,值为23.800000 程序结束
处理被除数为零的异常
#include<iostream> using namespace std; int main() { int a,b; cin>>a>>b; try{ if(a==0) throw 0;// else {
cout<<b/a<<endl;
thorw 1;
}
} catch(int i) {
if(i==0) cout<<("产生被除数为0的异常"); } return 0; }
其他异常处理
#include<stdio.h> void f(){ try{ throw "abc"; } catch(const char*){ printf("执行f出现const char*异常\n"); throw;//继续抛出得到的异常 } printf("f函数打印\n"); //该语句不会打印 } int main() { try{ f(); } catch(const char*){ printf("执行main出现const char*异常\n"); } return 0; }
打印结果:
执行f出现const char*异常 执行main出现const char*异常
never give up