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

股票场外期权网站开发辽宁建设科技信息网网站

股票场外期权网站开发,辽宁建设科技信息网网站,十大免费网页游戏,做母亲节网站的素材16.1 异常的基本语法 1) 若有异常则通过throw操作创建一个异常对象并抛掷。2) 将可能抛出异常的程序段嵌在try块之中。控制通过正常的顺序执行到达try语句,然后执行try块内的保护段。3) 如果在保护段执行期间没有引起异常&#xf…

16.1 异常的基本语法

在这里插入图片描述

  • 1) 若有异常则通过throw操作创建一个异常对象并抛掷。
  • 2) 将可能抛出异常的程序段嵌在try块之中。控制通过正常的顺序执行到达try语句,然后执行try块内的保护段。
  • 3) 如果在保护段执行期间没有引起异常,那么跟在try块后的catch子句就不执行。程序从try块后跟随的最后一个catch子句后面的语句继续执行下去。
  • 4) catch子句按其在try块后出现的顺序被检查。匹配的catch子句将捕获并处理异常(或继续抛掷异常)。
  • 5) 如果匹配的处理器未找到,则运行函数terminate将被自动调用,其缺省功能是调用abort终止程序。
  • 6)处理不了的异常,可以在catch的最后一个分支,使用throw语法,向上扔。
  • 7)异常机制与函数机制互不干涉,但捕捉的方式是基于类型匹配。捕捉相当于函数返回类型的匹配,而不是函数参数的匹配,所以捕捉不用考虑一个抛掷中的多种数据类型匹配问题
  • 8)异常捕捉严格按照类型匹配
    在这里插入图片描述
    在这里插入图片描述
    完整示例代码:
#include <iostream>using namespace std;int Div(int x, int y)
{if (0 == y){//return -1;//throw 0;        //抛出异常throw 'a';}return x / y;
}int main()
{int a, b;cin >> a >> b;try { 								//把可能抛出异常的代码放在try语句中cout << Div(a, b) << endl;}catch(int)  // throw 0;{cout << "zero exception" << endl;}catch(char)  // throw 'a'{cout << "char exception" << endl;}return 0;
}

运行结果:
在这里插入图片描述

16.2 异常处理的基本思想

16.2.1 传统的错误处理机制:通过函数返回值处理错误

例如常见的:return -1;

16.2.2 异常处理思想

  • 1)C++的异常处理机制使得异常的引发和异常的处理不必在同一个函数中,这样底层的函数可以着重解决具体问题,而不必过多的考虑异常的处理。上层调用者可以在适当的位置设计对不同类型异常的处理。
  • 2)异常是专门针对抽象编程中的一系列错误处理的,C++中不能借助函数机制,因为栈结构的本质是先进后出,依次访问,无法进行跳跃,但错误处理的特征却是遇到错误信息就想要转到若干级之上进行重新尝试,如图
    在这里插入图片描述
  • 3)异常超脱于函数机制,决定了其对函数的跨越式回跳。
  • 4)异常跨越函数
    在这里插入图片描述
    完整示例代码:
#include <iostream>using namespace std;int DDiv(int x, int y)
{if (0 == y){throw 0;  // 可以跨越函数,不用在他的上一级语句判断函数返回值}return x / y;
}int Div(int x, int y)
{/*int ret = DDiv(x, y);if (0 == ret){	}else{}*/return DDiv(x, y);
}int main()
{int a, b;cin >> a >> b;try{ 								//把可能抛出异常的代码放在try语句中cout << Div(a, b) << endl;}catch(int){cout << "zero exception" << endl;}catch (char){cout << "char exception" << endl;}return 0;
}

运行结果:
在这里插入图片描述

16.3 异常接口声明

  • 1)为了加强程序的可读性,可以在函数声明中列出可能抛出的所有异常类型,例如:
    void func() throw (A, B, C , D); //这个函数func()能够且只能抛出类型A B C D及其子类型的异常

  • 2)如果在函数声明中没有包含异常接口声明,则次函数可以抛掷任何类型的异常,例如:void func();

  • 3)一个不抛掷任何类型异常的函数可以声明为:void func() throw();

  • 4) 如果一个函数抛出了它的异常接口声明所不允许抛出的异常,unexpected函数会被调用,该函数默认行为调用terminate函数中止程序。
    在这里插入图片描述
    在这里插入图片描述
    完整示例代码:

#include <iostream>using namespace std;int Div(int x, int y) throw(int, char);   //只能抛出整形或者字符型异常
//int Div(int x, int y) throw();          //不会抛出任何类型异常
//int Div(int x, int y);                  //可能抛出任何类型的异常int main()
{int a, b;cin >> a >> b;try{ 								//把可能抛出异常的代码放在try语句中cout << Div(a, b) << endl;}catch(int){cout << "zero exception" << endl;}catch (char){cout << "char exception" << endl;}return 0;
}int Div(int x, int y) throw(int, char)
{if (0 == y){//return -1;//throw 0;        //抛出异常throw 'a';}return x / y;
}

运行结果:
在这里插入图片描述

16.4 异常类型和异常变量的生命周期

16.4.1 传统处理错误

16.4.2 throw int类型异常

16.4.3 throw字符类型异常

16.4.4 throw类对象类型异常

在这里插入图片描述
在这里插入图片描述
完整示例代码:

#include <iostream>using namespace std;class Test
{
public:Test(){	cout << "Test构造函数" << endl;}Test(const Test &t){cout << "Test拷贝构造函数" << endl;}void print(){cout << "Test Exceotion" << endl;}~Test(){cout << "Test析构函数" << endl;}
};int Div(int x, int y)
{if (0 == y){throw Test();    //抛出对象//throw new Test;    //抛出对象指针}return x / y;
}int main()
{int a, b;cin >> a >> b;try{ 								//把可能抛出异常的代码放在try语句中cout << Div(a, b) << endl;}catch(int){cout << "zero exception" << endl;}catch (char){cout << "char exception" << endl;}/*catch (Test t)   //调用拷贝构造函数{t.print();}*/catch (Test &t)   //抛出对象,通过引用来接(推荐){	t.print();}catch (Test *t){t->print();delete t;   //需要手动释放}return 0;
}

运行结果:
在这里插入图片描述

16.5 标准程序库异常

在这里插入图片描述
在这里插入图片描述
示例代码:

#include <iostream>
#include <exception>using namespace std;int main()
{try{int *p = new int[-1];}catch (exception &e){cout << e.what() << endl;}return 0;
}

运行结果:
在这里插入图片描述

http://www.yayakq.cn/news/725441/

相关文章:

  • 做视频推广有哪几个网站涟源市住房与城乡建设局网站
  • 做网站好的cps推广是什么意思
  • 济南高新区网站建设北京搬家公司哪家服务最好
  • 网站流量达到多少邢台168交友最新信息
  • 吉林省建设厅网站把网页做成软件
  • 秋佐科技公司网站爱网卡
  • 宿迁市建设局网站怎么投诉电商网站建设实训心得
  • 产品服务展示型网站有哪些空间设计大师
  • 网站建设公司哪个好呀net网站建设网站建设的经济可行性
  • 随州网站建站黄冈市住房和城乡建设厅网站
  • 株洲建设网站制作手机网站生成工具
  • 什么电商平台免费开店哈尔滨关键词优化软件
  • 宜昌网站制作公司网站建设所需人员
  • 广州建设网站下载网页设计与制作精品课程网站
  • tap自助建站佛山网站建设玲念建站
  • 哈尔滨建设网站wordpress 新变量
  • 个人网站备案不通过手机优化好还是不优化好
  • 移动app做的好的网站企业管理系统项目经历
  • 山东建设公司网站上海市建设市场信息服务平台
  • 自适应网站如何做移动适配建站公司不给源码
  • 温州网站建设优化公司做网站需要自己研发吗
  • 孵化器网站建设wordpress设置上传文件大小
  • 可视化建站源码网盘搜索
  • 网站设计难点网站 建设 后台管理程序
  • 网站设置多少个关键词为个人网站做微信服务号
  • 合肥网站建设价格网站设计的可行性分析
  • 旅游网站怎么做才能被关注常州网站建设市场
  • 百度软件安装模版网站可以做seo吗
  • 海南省交通工程建设局网站网站建设柚子网络科技怎么样
  • 常州北京网站建设网站建设有哪些优质公众号