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

介绍旅游美食的网站模板爱站工具查询

介绍旅游美食的网站模板,爱站工具查询,网站维护明细报价表,wordpress瀑布流网店异常是程序在执行期间产生的问题。C 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。异常提供了一种转移程序控制权的方式。C 异常处理涉及到三个关键字:try、catch、throw。throw: 当问题出现时,程序会抛出一个异常。这是通过使…

异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。

异常提供了一种转移程序控制权的方式。C++ 异常处理涉及到三个关键字:try、catch、throw

  • throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。

  • catch: 在您想要处理问题的地方,通过异常处理程序捕获异常。catch 关键字用于捕获异常。

  • try: try 块中的代码标识将被激活的特定异常。它后面通常跟着一个或多个 catch 块。

const throw() 不是函数,这个东西叫异常规格说明,表示 what 函数可以抛出异常的类型,类型说明放到 () 里,这里面没有类型,就是声明这个函数不抛出异常,通常函数不写后面的 throw() 就表示函数可以抛出任何类型的异常。

异常规格说明

  1. 异常规格说明的目的是为了让函数使用者知道该函数可能抛出的异常有哪些。 可以在函数的声明中列出这个函数可能抛掷的所有异常类型。例如:

void fun() throw(A,B,C,D);

2、若无异常接口声明,则此函数可以抛掷任何类型的异常。

  1. 不抛掷任何类型异常的函数声明如下:

#include 
#include 
using namespace std;class MyException
{
public:MyException(const char *message): message_(message){cout << "MyException ..." << endl;}MyException(const MyException &other) : message_(other.message_){cout << "Copy MyException ..." << endl;}virtual ~MyException(){cout << "~MyException ..." << endl;}const char *what() const{return message_.c_str();}
private:string message_;
};class MyExceptionD : public MyException
{
public:MyExceptionD(const char *message): MyException(message){cout << "MyExceptionD ..." << endl;}MyExceptionD(const MyExceptionD &other): MyException(other){cout << "Copy MyExceptionD ..." << endl;}~MyExceptionD(){cout << "~MyExceptionD ..." << endl;}
};void fun(int n) throw (int, MyException, MyExceptionD)
{if (n == 1){throw 1;}else if (n == 2){throw MyException("test Exception");}else if (n == 3){throw MyExceptionD("test ExceptionD");}}void fun2() throw()
{}int main(void)
{try{fun(2);}catch (int n){cout << "catch int ..." << endl;cout << "n=" << n << endl;}catch (MyExceptionD &e){cout << "catch MyExceptionD ..." << endl;cout << e.what() << endl;}catch (MyException &e){cout << "catch MyException ..." << endl;cout << e.what() << endl;}return 0;
}

C++ Primer 中关于 what()的解释:

在之前的例子里,我们使用了一个 throw 表达式以避免把两个代表不同书籍的 Sales_item 相加。我们假设执行 Sales_item 对象加法的代码是与用户交互的代码分离开的。其中与用户交互的代码负责处理发生的异常,它的形式可能如下所示:

while (cin >> item1 >> item2){try{//执行添加两个Sales_item对象的代码//如果添加失败,代码抛出一个runtime_error异常} catch (runtime_error err){//提醒用户两个ISBN必须一致,询问是否重新输入cout << err.what()<< "\nTry Again? Enter y or n" << endl;char c;cin >> c;İf (!cin || c == 'n')break;//跳出while循环}
}

程序本来要执行的任务出现在 try 语句块中,是因为这段代码可能会抛出一个 runtime_error 类型的异常。

try 语句块对应一个 catch 子句。该子句负责处理类行为 runtime_error 的异常。如果 try 语句块的代码抛出了runtime_error 异常,接下来执行 catch 块内的语句。在我们书写的 catch 子句中,数出一段提示信息要求用户指定程序是否继续。如果用户输入 n,执行 break 语句并退出 while 循环;否则,直接执行 while 循环的右侧花括号,意味着程序控制权条回到 while 条件部分准备下一次迭代。

给用户的提示信息中输出了 err.what() 的返回值。我们知道 err 的类型是 runtime_error,因此能推断 what 是 runtime_error 类的一个成员函数。每个标准库异常类都定义了名为 what 的成员函数。这些函数没有参数,返回值是 C 风格字符串(即 const char *)其中,runtime_error 的 what 成员函数返回的是初始化一个具体对象所用的 string 对象的副本。如果上一节编写的代码抛出异常,则本节的 catch 子句输出:

Data must refer to same ISBN
Try Again? Enter y or n

在 C++11 中,声明一个函数不可以抛出任何异常使用关键字 noexcept。

void mightThrow(); // could throw any exceptions.
void doesNotThrow() noexcept; // does not throw any exceptions.

下面两个函数声明的异常规格在语义上是相同的,都表示函数不抛出任何异常。

void old_stytle() throw();
void new_style() noexcept;

对于:

const char * what () const throw ()
{
//函数体
}

做几点说明,从左到右看:

1. const char * 表示返回值类型

2. what 是函数名称

3. () 是参数列表

4. const 表示该成员函数不能修改成员变量

5. throw() 是异常规格说明符。括号内写该函数可抛出的异常类型

上述 5 点均为函数的声明部分。

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

相关文章:

  • 普洱做网站的报价wordpress作作品集
  • 开福区城乡建设局门户网站设计周
  • 宁夏建设厅官方网站深圳好点的网站建设公司
  • 画册排版设计网站北京seo分析
  • 如何判断网站数据库类型可以做软文推广的网站
  • 哪里学网站建设与管理做网站别人输账号代码
  • 南京网站建设知识推广网上国网
  • 中文网站建设解决方案wordpress 菜单高亮
  • 什么网站做的产品海报比较多网站建设课程有哪些收获
  • 阿里云网站开发dw网页制作教程练习
  • 行业门户网站 自助建站保险网站导航
  • 建设银行绑定手机号码网站网站开发软件费用
  • 扁平化颜色网站官网建设目的
  • 网站开发技术文档备案域名卖出后涉赌怎么办
  • 温州乐清做网站的公司企业的网站建设怎么记科目
  • 怎么在qq上自己做网站网站模板用什么打开
  • 梅州网站优化怎么做二维码进入公司网站
  • 甘肃购物网站建设男人与女人做视频网站
  • 贝尔利网站做网站公司怎么赚钱
  • 门头沟石家庄网站建设网站开发文章怎么分类
  • 网站建设知名公司排名西安网站设计建设公司
  • 网站php源码网站ui设计规范
  • nodejs的网站开发注册公司地址可以是住宅吗
  • 商城网站要怎样设计品牌建设包括哪些
  • 现在是用什么软件做网站怎么选择优秀的网站建设公司
  • 网站后台可改资料引流推广平台有哪些
  • 专业网站开发技术网站开发的数据库设计实体是什么
  • 湖南城乡和建设厅网站做购物平台网站需要注意什么
  • 罗湖商城网站设计公司设计一个网站的价格
  • 息壤网站模板wordpress分享微信插件