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

湖州童装网站兰州seo优化入门

湖州童装网站,兰州seo优化入门,0基础做下载网站,做图片的网站有哪些异常是程序在执行期间产生的问题。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/111667/

相关文章:

  • 在建设部网站如何查询注册信息设计一个好的wordpress主题的10个准则_
  • 个人网站如何做淘宝客服务号微网站怎么做
  • 做个公司网站大概多少钱手机网站模版更换技巧
  • 商城网站开发时间个人 网站备案 幕布
  • 教育行业网站建设审批联合建设官方网站
  • 新泰高品质网站建设娱乐网站制作
  • 浙江住房城乡建设厅网站电子商城网站建设公司
  • akcms做的网站宁夏建设工程招标投标信息管理中心网站
  • 专业做全景图的网站平台中山哪家做网站好
  • 怎么加入电商平台卖货安徽搜索引擎优化
  • 好品质自适应网站建设网站开发需求说明
  • 合肥搭建网站自己找网站开发项目
  • 西安通程建设工程 网站wordpress朗读句子插件
  • 建立网站英文泉州网站网站建设
  • 扬州网站建设开发建设肯德基网站的好处
  • 网站根目录在哪wordpress网站维护有文化建设费
  • 长春网络建站模板十堰网站优化排名
  • 公司网站建设应注意wordpress广告插件
  • 家具行业网站建设湖南网上注册公司流程
  • 注册公司什么网站网站建设的简历
  • 安徽网站优化厂家报价大丰网站建设找哪家好
  • 注册了域名怎么添加到自己的网站山东seo优化
  • 优秀网站首页网站建设通知
  • 做网站竞品分析招聘h5是什么意思
  • 网站开发建设属于什么费用贵阳市建设局网站
  • 网站上传文件不存在PHP网站开发都需要学什么
  • 郑州做网站推广多少钱etw做的网站
  • 如何做黑彩网站wordpress如何设置用户登陆
  • 交通局网站建设整改设计作品集模板免费下载
  • preec网站大型网站建设机构哪家好