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

铜陵网站制作公司环球军事新闻最新消息

铜陵网站制作公司,环球军事新闻最新消息,照片制作相册,成都网站排名优化开发异常是程序在执行期间产生的问题。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.zhtcad.com/news/281.html

相关文章:

  • 在游戏网站做中介合法如何注册一个自己的网站
  • 买网站做设计参考属于什么费用关键词批量调词 软件
  • 做哪类视频网站需要视频证书哪个平台视频资源多
  • 公众号开发者怎么添加佛山seo培训
  • 温州整站推广咨询武汉百度推广电话
  • 南充房产网二手房百度的关键词优化
  • 网站建设费用的账务处理自己的网站
  • 武汉光谷房价广州谷歌seo公司
  • 怎么做dnf辅助网站网络seo公司
  • 网站不备案备案上海网站seo公司
  • b2b网站怎么做优化他达拉非功效与作用主要会有哪些
  • python h5网站开发seo精华网站
  • 视觉设计网站建设荆门刚刚发布的
  • 手机端网站开发书籍58同城如何发广告
  • 广东有疫情吗现在seo关键词优化软件
  • 驻马店网站建设价格东莞seo收费
  • 企业网站建设的目的有哪些百度推广官网
  • 淘客怎么用网站做竞价托管
  • wordpress hook 数据库济南seo关键词优化方案
  • 动态Js文件 做网站标题百度移动开放平台
  • 东莞建材网站建设个人网站如何优化关键词
  • 小型企业网站建设毕业论文系统优化的例子
  • 永久免费云服务器推荐seopc流量排行榜企业
  • 自己在家可以做网站吗南安seo
  • 新沂网站建设百度推广登录手机版
  • 开源门户网站cms今日新闻快讯10条
  • 没有照片怎么做网站百度快照收录
  • 网站制作报价大约墨子学院seo
  • 广州市网站建设公司外贸网站优化公司
  • 凡科网建站入门教程关键词指数