当前位置: 首页 > news >正文

梅州网站建设梅州我要看今日头条

梅州网站建设梅州,我要看今日头条,建网站建设,柳城企业网站开发公司1.什么是异常,什么是错误? 程序无法保证100%正确运行,万无一失。有的错误在编译时能发现,比如:关键字拼写、变量名未定义、括号不配对、语句末尾缺分号等。这是在编译阶段发现的,称为编译错误。 有的能正常…

1.什么是异常,什么是错误?

程序无法保证100%正确运行,万无一失。有的错误在编译时能发现,比如:关键字拼写、变量名未定义、括号不配对、语句末尾缺分号等。这是在编译阶段发现的,称为编译错误。
有的能正常通过编译,也能运行,但在运行过程中出现异常。出现异常,系统不应该崩溃退出,而应该给用户提示,让他改对输入。
比如:计算过程,出现除数为0, 内存空间不够、无法打开输入文件。 这体现了系统的容错能力。
**异常处理:**对运行时出现的差错以及其它例外情况的处理。

2.如何处理异常

#include<iostream>
#include<cmath>
using namespace std;
int main(){double triangle(double,double,double);cout << "pls input three double num and make a triangle:" << endl;double a,b,c, area;cin >> a >> b >> c;try{while(a>0&&b>0&&c>0){area = triangle(a,b,c);}}catch(double){cout << "error!" << endl;}catch(const std::exception& e){std::cerr << e.what() << '\n';}cout << "the result:" << area << endl;return 0;}double triangle(double a,double b,double c){double area;double s = (a+b+c)/2;if(a+b<=c||a+c<=b||b+c<=a){throw a;}area = sqrt(s*(s-a)*(s-b)*(s-c));return area;
}

可以捕获任何类型的错误,用来兜底使用

catch(....){cout << "ERROR! << endl;
}

上层调用侧将异常信息原样抛出

catch(int){throw;// 将已捕获的异常信息再次原样输出
}

3.在函数声明中进行异常情况指定

php7 开始有了这种情况,原来是从C++来的

double triangle(double,double,double) throw(double);

表示函数只能抛出double类的异常。

double triangle(double,double,double) throw(double,int, float, char);

表示函数只能抛出double,int, float, char类的异常。

表示一个不能抛出异常的函数,程序将非正常终止

double triangle(double,double,double) throw();

4. 进阶

4.1 在异常处理中处理析构函数?

我记得php中也对此有过讨论。好像还能手动修改。
先执行 destruct 在执行 catch

#include<iostream>
#include<string>
#include<cmath>
using namespace std;
class Student{
public:Student(int n, string nam){num = n;name = nam;cout << "constructor-" << num << endl;}~Student(){cout << "destructor-" << num << endl;}void get_data();
private:int num;string name;};void Student::get_data(){if (num==0){throw num;}else{cout << num << " " << name << endl;cout << "in get_data() " << endl;}
}void fun(){Student stud1(1101,"Tan");stud1.get_data();Student stud2(0,"li");stud2.get_data();
}int main(){cout << "main begin" << endl;cout << "call fun()" << endl;try{fun();}catch(int n){cout << "num="<<n<<",error!"<<endl;}cout << "main end" << endl;return 0;}

输出内容:

main begin
call fun()
constructor-1101
1101 Tan
in get_data()
constructor-0destructor-0destructor-1101
num=0,error!
main end

4.2 如何在catch中获取堆栈信息?

http://www.dinnco.com/news/30186.html

相关文章:

  • 赣州网站设计哪里好链接提取视频的网站
  • 核工业华南建设工程集团公司网站百度免费优化
  • 技术支持 东莞网站建设洋酒回收网络推广工作好干吗
  • 外贸网站制作时间及费用谷歌关键词排名查询工具
  • wordpress 获取导航栏网站搜索优化排名
  • 深圳的网站建设公司的分类是谷歌应用商店
  • 西安网站公司建设seo报告
  • 聊城专业网站建设杭州专业seo服务公司
  • 成都定制网站建百度爱采购官方网站
  • 成都移动网站建设抖音seo排名
  • 无锡网站建设哪家做得比较好来客seo
  • 自己建网站要什么网站制作软件
  • 网站开发工作程序怎么写360推广联盟
  • 福州网站建设哪家好化学sem是什么意思
  • 海南做网站广州企业网站推广
  • 现在网站都是拿什么软件做的seo提高关键词
  • 动态网站模板下载怎么开展网络营销推广
  • WordPress禁用f12搜索引擎优化方式
  • 杭州网站建设技术东莞网站建设方案报价
  • 电子商务网站优化手机百度一下百度
  • 保定企业自助建站青岛seo杭州厂商
  • 网站制作 价格必应搜索
  • 西宁做网站君博示范在线建站网页制作网站建设平台
  • 网站 建设开发合同模板百度热搜榜排名今日头条
  • 贵阳网络推广哪家靠谱免费seo网站诊断免费
  • 免费wap建站免费下载优化大师
  • 怎样查看网站服务商谷歌优化工具
  • 抚宁网站建设seo整站优化外包公司
  • 深圳华强北封闭了吗常熟seo关键词优化公司
  • 网站建设特点优化关键词排名